資源描述:
《ADO.NET學(xué)習(xí)筆記(教程)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、ADO.NET連接SQLSERVER數(shù)據(jù)庫連接字符串:DataSource=localhost;AttchDBFilename=
2、DataDirectory
3、Database1.mdf;InitialCatalog=UserDate;IntegratedSecurity=True參數(shù)說明:DataSource表示數(shù)據(jù)源,其值為服務(wù)器地址和實例名,如果是正式版則不用加SQLEXPRESS,如果是免費版,必須加上SQLEXPRESS,即連接本機可以寫成“.SQLEXPRESS”;AttchDBFilename表示附加數(shù)據(jù)庫,其值為附加數(shù)據(jù)庫的地址,DataDi
4、rectory代表當(dāng)前項目目錄下的App_data目錄,是數(shù)據(jù)庫的默認存儲路徑;InitialCatalog為數(shù)據(jù)庫,其值為當(dāng)前連接所要連接的數(shù)據(jù)庫名稱注:如果要使用Sqlconnection對象,必須導(dǎo)入System.Data.Sqlclient命名空間ADO.NET中的連接等資源都實現(xiàn)了IDisposable接口,可以使用using進行資源管理。也可以使用try……catch語句塊括起來,但是using是最簡單的。代碼語句:using(SqlConnectioncon=newSqlConnection("DataSource=localhost;Initi
5、alCatalog=UserDate;IntegratedSecurity=True")){程序語句塊;}或者:SqlConnectioncnn=newSqlConnection();//創(chuàng)建SqlConnection對象的一個實例cnn.ConnectionString="DataSource=localhost;InitialCatalog=UserDate;IntegratedSecurity=True";cnn.Open();注:using的作用是及時的釋放資源,在花括號結(jié)束的時候,程序會自動釋放語句所申請的內(nèi)存,以達到程序的最優(yōu)。通過SqlComma
6、nd對象執(zhí)行SQL語句SqlCommand對象可以執(zhí)行SQL語句完成對數(shù)據(jù)庫的增、刪、改、查等數(shù)據(jù)操作。在SqlCommand類中,最主要的屬性有CommandText,該屬性用于接收要執(zhí)行的SQL語句,例如cmd.CommandText="INSERTINTOb1(name,company,position,shijian)VALUES(@Name,@Company,@Position,@Datetime)",除了CommandText屬性,主要還有Connection屬性,用來接收數(shù)據(jù)庫連接,還有Transaction屬性,用來接收事物。其還有三個比較常用
7、的方法,第一個是ExecuteNonQuery()方法,主要用來提交無查詢結(jié)果的SQL語句,如UPDATE,INSERT,DELETE等語句,其返回值為數(shù)據(jù)庫中被SQL語句影響的行數(shù),第二個是ExecuteReader()方法,主要用來提交SELECT語句,返回值是一個數(shù)據(jù)流,里面是SELECT語句的查詢結(jié)果,可以用SqlDataReader對象來接收,然后調(diào)用其Read()方法來逐行讀出查詢結(jié)果。第三個是ExexuteScalar()方法,主要也是用來提交SELECT語句,但是其返回值是查詢結(jié)果的第一行第一列,所以適用于例如COUNT等聚合查詢。SQL注入與
8、參數(shù)化查詢SQL注入是通過特殊的SQL語句非法獲取數(shù)據(jù)庫的內(nèi)容。為了保證系統(tǒng)不被黑客進行SQL注入攻擊,在SqlCommand執(zhí)行SQL語句時,可以對提交的數(shù)據(jù)先進行參數(shù)化處理,參數(shù)化處理主要是通過SqlCommand對象的Parameters屬性的Add方法來完成,參數(shù)化處理有兩種方法,第一種既是在“執(zhí)行Insert操作”中提到的,還有另外一種代碼如下:cmd.CommandText="INSERTINTOb1(name,company,position,shijian)VALUES(@Name,@Company,@Position,@Datetime)";
9、cmd.Parameters.Add(newSqlParameter("Name",Name.Text));cmd.Parameters.Add(newSqlParameter("Company",Company.Text));cmd.Parameters.Add(newSqlParameter("Position",Position.Text));cmd.Parameters.Add(newSqlParameter("Datetime",DateTime.Parse(Datetime.Text)));cmd.ExecuteNonQuery();注:以上的代碼
10、中需要注意一點,在第一種代碼中,顯示的