1. 程式人生 > >ADO.Net之SqlConnection,Sqlcommand的應用

ADO.Net之SqlConnection,Sqlcommand的應用

一. SqlConnection物件。 使用SqlConnection類可以連線到SQL Server資料庫。SqlConnection物件的主要屬性和方法如下: 屬性和方法 說明 屬性 ConnectionString 連線字串 方法 Open 開啟資料庫連線 Close 關閉資料庫連線

連線資料庫主要分以下3步: 1.1定義字串。 我們可以使用Window身份驗證和SQL Server身份驗證2種方式連線到SQL Server資料庫。 1).Window驗證連線字串如下:

Server=(Local);Database=EduBaseDemo;Integrated Security=sspi;

說明:Server表示執行SQL Server的伺服器,(Local)表示本地連線,也可以使用伺服器名。Database表示使用的資料庫名,這裡所用的資料庫為EduBaseDemo;Integrated Security為sspi表示使用整合的Window身份驗證,也可以使用True和false來表示,這裡sspi等價True。由於習慣我們統一使用sspi。 2).使用SQL Server身份驗證連線字串如下:

Serve=(SQL Server的服器);Database=EduBaseDemo;IntegratedSecurity=false
;uid=jsj;[email protected];

說明:uid為指定的資料庫名,pwd為對應的密碼; 1.2建立SqlConnection物件。 可以使用定義好的連線字串建立SqlConnection物件,程式碼如下。

SqlConnection sqlConnection = new SqlConnection();

1.3開啟資料庫連線。 呼叫SqlConnection的Open()方法開啟資料庫,程式碼如下:

sqlConnection.Open();

注意:資料庫連線使用完畢,呼叫SqlConnection的Close ()方法關閉資料庫 sqlConnection.Close();為了避免忘記,我一般習慣敲完sqlConnection.Open();後立馬敲個sqlConnection.Close(); 2.1 try….catch…finally語句 當訪問資料庫的時候,可能會出現資料庫伺服器沒有開啟,連線中斷等各種異常情況,為了使應用程式能處理這些突發情況,如下面程式碼: 這裡寫圖片描述

這裡寫圖片描述

這樣就防止了註冊使用者已存在而是資料庫插入資料異常引起的應用程式錯誤。 二. Sqlcommand物件 2.1 Sqlcommand物件用於執行具體的SQL語句,如增刪改查等操作。Sqlcommand物件的幾個重要方法如下: 方法 說明 ExecuteScalar 執行查詢,並返回查詢結果中第一列的值,型別是object ExecuteNonQuery 執行SQL語句並返回受影響的行數 ExecuteReader 執行查詢命令,返回SqlDataReader物件 2.2 Sqlcommand物件的使用步驟如下: 三. 1)建立Sqlcommand物件 按照上文介紹的方法建立SqlConnection物件。 2)定義SQL語句 將所要執行的SQL語句賦給字串。程式碼如下

sqlCommand.CommandText ="SELECT COUNT(1) FROM tb_User"+ " WHERE No='" + this.txb_UserNo.Text.Trim() + "'"+ " AND Password= '" + this.txb_Password.Text.Trim() + "'";

注意:這種直接賦值很容易受到注入式攻擊,如下圖 這裡寫圖片描述

沒有輸入正確密碼而登入成功,通過輸入一些字元而串改了原始碼,我們來分析下為什麼 SELECT COUNT(1) FROM tb_User WHERE No=3140707001 AND Password= ‘’ or 1=1;– Or的優先順序比AND 低,所以最終結果是恆為1;- -把後面的程式碼註釋掉,這樣就能注入式攻擊,甚至還能刪除你的資料庫等更加惡劣的操作。 所以推薦使用用帶引數的SQL語言程式碼如下:

sqlCommand.CommandText ="INSERT tb_User (No,Password) VALUES(@No,HASHBYTES ('MD5',@Password));";
sqlCommand.Parameters.AddWithValue("@No",this.txb_UserNo.Text.Trim());
sqlCommand.Parameters.AddWithValue("@Password", this.txb_Password.Text.Trim());
sqlCommand.Parameters["@Password"].SqlDbType = SqlDbType.VarChar;

這樣就能避免這些。 3)建立Sqlcommand物件 我們可以調運Sqlcommand類的構造方法建立Sqlcommand物件,傳入2個引數,即SQL語句和Sqlcommand物件程式碼如下:

SqlCommand sqlCommand = sqlConnection.CreateCommand();

4)呼叫Sqlcommand物件的某個方法,執行SQL語句。 注意:在呼叫Sqlcommand物件的方法之前,一定要開啟資料庫連線。 下面是使用者註冊的程式碼: 這裡寫圖片描述

思維導圖如下: 這裡寫圖片描述