ADO.NET使我們在VS開發中用到最多的數據庫訪問接口,這里我不見它的原理和其它,直接說它的幾種常見的用法。
聲明:在ADO.NET全部講完之后,會將整個源代碼貼出,將單個的時候只貼出涉及到的代碼。
一、SqlCommand
表示要對 SQL Server 數據庫執行的一個 Transact-SQL 語句或存儲過程。 此類不能被繼承。Command類可以執行任何類型的SQL語句。
1、構造函數
我們在使用其執行SQL語句的時候,必須首先聲明其對象,常用的三種:
◆ SqlCommand() 初始化 SqlCommand 類的新實例。
◆ SqlCommand(String) 用查詢文本初始化 SqlCommand 類的新實例。
◆ SqlCommand(String,SqlConnection) 初始化具有查詢文本和 SqlConnection 的 SqlCommand 類的新實例。
【注】SqlConnection 的使用將不單獨講,因為在操作數據庫的時候都會用到。
2、常見屬性
◆ CommandText 獲取或設置要對數據源執行的 Transact-SQL 語句、表名或存儲過程。
◆ CommandType 獲取或設置一個值,該值指示如何解釋 CommandText 屬性。
◆ Connection 獲取或設置 SqlCommand 的此實例使用的 SqlConnection。
◆ Parameters 獲取 SqlParameterCollection(sql語句中需要輸入的闡述集合)。
3、常用方法
◆ ExecuteNonQuery 執行 Transact-SQL INSERT、DELETE、UPDATE 及 SET 語句等命令並返回受影響的行數。
◆ ExecuteReader() 將 CommandText 發送到 Connection 並生成一個 SqlDataReader。
◆ ExecuteReader(CommandBehavior) 將 CommandText 發送到 Connection,並使用 CommandBehavior 值之一生成一個 SqlDataReader。
◆ ExecuteScalar 執行查詢,並返回查詢所返回的結果集中第一行的第一列。 忽略其他列或行。
◆ Dispose() 釋放由 Component 使用的所有資源。
3、示例
◇使用SqlCommand執行添加數據的操作:
string teacherName = NameTextBox.Text.Trim(); string strConn = ConfigurationManager.ConnectionStrings["ConnectionStr"].ToString();//獲取數據庫連接字符串 SqlConnection conn = new SqlConnection(strConn);//創建連接 try { conn.Open();//打開數據庫連接 string inserStr = "insert into Fortyfour_Teacher (TeacherName) values (@teacherName)"; using(SqlCommand cmd = new SqlCommand(inserStr,conn))
{ SqlParameter p1 = new SqlParameter("@teacherName",teacherName); cmd.Parameters.Add(p1);//添加參數 if (cmd.ExecuteNonQuery() > 0) { //添加成功的操作 } else { //添加失敗的操作 } } } catch(Exception ex){ throw ex; } finally{ conn.Close();//關閉數據庫,可以在打開 conn.Dispose();//關閉數據庫,釋放控件,不可在連接。 }
◇使用SqlCommand執行刪除、修改數據的操作,這里我不寫出代碼,這個和添加很像,區別在於 sql語句不一樣
◇使用SqlCommand執行查詢數據的操作,這個需要結合DataReader()或者DataAdapter()來獲得數據庫中的數據,DataAdapter()將在后面的文章中詳細講解,現在將講解一下DataReader()。
二、SqlDataReader
提供一種從 SQL Server 數據庫讀取行的只進流的方式。 此類不能被繼承。只能向下順序執行,一次讀取一條記錄,所以需要隨時保存的記錄。
1、常用屬性
◆ IsClosed 檢索一個布爾值,該值指示是否已關閉指定的 SqlDataReader 實例。
2、常用方法
◆ Read() 使 SqlDataReader 前進到下一條記錄。
◆ Close 關閉 SqlDataReader 對象。
◆ Dispose() 釋放 DbDataReader 類的當前實例所使用的所有資源。
◆ IsCommandBehavior 確定指定的 CommandBehavior 是否與 SqlDataReader 的對應項匹配。
◆ IsDBNull 獲取一個值,用於指示列中是否包含不存在的或缺少的值。
3、示例,結合SqlCommand
private static void ReadStudent(string connectionString) { string queryString = "SELECT StudentId, StudentName FROM Student"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); using(SqlDataReader reader = command.ExecuteReader()){//使用DataReader對象保存讀取的數據 while (reader.Read())//向下讀取數據,判斷是否有數據 { Console.WriteLine(String.Format("{0}, {1}",reader[0], reader[1])); } } } }
參考資料:MSDN
【注】下篇文章將詳細講解DataAdapter與DataSet/DataTable,以及CommandBuilder