Command物件建立SQl語句程式碼示例
說明:前面介紹了 Command 物件的方法和一些屬性,回顧一下 Command物件主要用來執行SQL語句。利用Command物件,可以查詢資料和修改資料。
在下面這段程式碼裡,首先根據連線字串建立一個SqlConnecdon連線物件,並用此物件連線資料來源:然後建立一個SqlCommand物件,並用此物件的ExecuteNonQuery方法執行不帶返回結果集的SQL語句。
1 //連線字串 2 3 private static string strConnect=" data source=localhost;database=LOGINDB;uid=sa;pwd=aspent;"
6 7 // 根據連線字串建立SqlConnection 連線控制程式碼 8 9 SqlConnetion objConnection =new SqlConnection(strConnect); 10 11 //資料庫命令 12 13 SqlCommand objCommand =new SqlCommand( " ",objConnection); 14 15 // 設定sql語句 16 17 objCommand.CommandText= " INSERT INTO USERS " + " (USERNAME, NICKNAME, USERPASSWORD, USEREMAIL, USERROLE, CREATDATE, LASTMODIFYDATE) "+ " VALUES " +" (@USERNAME, @NICKNAME, @USERPASSWORD, @USEREMAIL, @USERROLE, @CREATDATE, @LASTMODIFYDATE ) "; 18 19 // 以下省略設定各值的語句 20 21 …… 22 23 try 24 25 { 26 27 //開啟資料庫連線 28 29 if( objConnection.State == ConnectionState. Closed ) 30 31 { 32 33 objConnection.Open(); 34 35 } 36 37 //獲取執行結果,插入資料 38 39 objCommand.ExecuteNonQuery(); 40 41 //省略後繼動作 42 43 …… 44 45 } 46 47 catch(SqlException e) 48 49 { 50 51 Response.Write(e.Message.ToString()); 52 53 } 54 55 finally 56 57 { 58 59 //關閉資料庫連線 60 61 if(objConnection.State == ConnectionState.Open) 62 63 { 64 65 objConnection.Close(); 66 67 } 68 69 }
這段程式碼是連線資料庫並執行操作的典型程式碼。
其中,運算元據庫的程式碼均在try… catch … finally結構中,因此程式碼不僅能正常地運算元據庫,更能在發生異常的情況下丟擲異常。
另外,不論是否發生異常,也不論發生了哪種資料庫操作的異常,finally塊裡的程式碼均會被執行,
所以,一定能保證程式碼在訪問資料庫後關閉連線。
而在下面的程式碼裡,將使用Command物件執行查詢類的SQL語句,並將結果集賦給DataRead物件。
private static string strConnect=" data source=localhost;uid=sa;pwd=aspent;database=LOGINDB" SqlConnetion objConnection =new SqlConnection(strConnect); SqlCommand objCommand =new SqlCommand( " ",objConnection); // 設定sql語句 objCommand.CommandText= "SELECT * FROM USERS "; try { //開啟資料庫連線 if( objConnection.State == ConnectionState. Closed ) objConnection.Open(); //獲取執行結果 SqlDataReader result=objCommand.ExecuteReader(); //省略後繼動作 …… } catch(SqlException e) { Response.Write(e.Message.ToString()); } finally { //關閉資料庫連線 if(objConnection.State == ConnectionState.Open) { objConnection.Close(); } }
這裡用到DataReader物件來獲得結果集,如果僅僅想返回查詢結果集的第一行第一列的值,可以將SqlDataReader result=objCommand.ExecuteReader();改成objCommand.ExecuteScalar().ToString();