最近的一段時間自己的狀態還是不錯的,早上,跑步,上自習看書,下午宿捨裡面編程實戰,晚上要麼練習代碼,要麼去打球(在不打就沒機會了),生活還是挺豐富的。
關於C#的基礎回顧就先到前面哪裡,這些要自己在工作中慢慢的去體會,不是說看書就可以掌握的。我們都是從學生時代過來的知道每個人的學習情況是不一樣的,所以找到自己的學習節奏是最好不過的。
下面是關於訪問數據庫[ADO.NET]的學習,之前剛開始學習的時候把這些基本的都過了一遍,但是長時間不使用,一些基本的用法還是會遺忘的。
一:關於ADO.NET中基本名稱的解釋
現在我才知道ADO.NET裡面分為連接類和斷開連接類兩種,這些都是從一些基本的關鍵字(就先這麼叫)來區分的。
連接類:
Connection, Command, DataReader和 DataAdapter
連接類可以提取和更新底層數據源中的數據。每個數據提供程序負責實現連接類。
Connection對象表示與數據源的一次單獨的會話,Connection類指定了連接到數據源必須的驗證信息。
Command對象使用一個已建立的Connection對象,對數據源執行SQL語句和存儲過程。CommandText屬性包含了對數據源所執行的sql語句。
DataReader提供了對結果集的只前,只讀的訪問。DataReader對象提供了訪問數據的最佳性能,避免了DataSet相關聯的開銷。可以通過執行Command類的ExecuteReader()方法創建一個DataReader對象。我們可以通過這個對象讀取到裡面具體的值。裡面有個.reader()方法我們可以通過這個來得到。
DataAdapter通過從數據源提取數據,並填充一個(斷開連接)的DataSet/DataTable,這個也可以進行更新,反著來。
斷開連接類:
DataSet, DataTable, DataColumn,DataRow, DataView, DataRelation和Constraint.
斷開連接類可以對於連接類提供的數據進行離線的訪問和操作,以後在使用與底層的數據源進行同步。
DataSet是存儲在內存中的一個斷開連接的關系數據庫(不和本地的有任何關系),提供高級浏覽功能,作為其它對象的容器,包括DataTable,DataRows,DataColumn我們可以在代碼中使用這些對象。
DataTable表示加載到內存中的數據的單個表,可以獨立存在,也可以作為DataSet中的一部分。
DataRow表示DataTable中的一行數據
DataRow表示DataTable中的一列數據
關於上面方法,屬性的基本操作
/// <summary> /// 關於ADO.NET中連接類和斷開連接類的學習. /// </summary> class Program { static void Main(string[] args) { string connectionString = ""; string sql = ""; SqlConnection conn=new SqlConnection(connectionString); SqlCommand cmd=new SqlCommand(sql,conn); cmd.CommandType=CommandType.Text; //這裡可以修改,要是存儲過程的話直接就修改了,這個是枚舉類型。 // 1 :使用SqlDataReader來操作 conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); //返回結果: System.Data.SqlClient.SqlDataReader 對象。 dr.Read(); //下面就可以取出我們需要的數據了,要是需要多次while()來循環. string data1=dr.GetString(0); //一次出現一行數據。 conn.Close(); dr.Close(); // 2 : 使用SqlDataApadter來操作 conn.Open(); //聲明DataTable和DataSet它們是斷開連接類,相當於本地的數據庫一樣。 DataTable table = new DataTable(); DataSet ds=new DataSet(); SqlDataAdapter da=new SqlDataAdapter(cmd); da.Fill(table); //把數據加載到DataTable中, da.Fill(ds); //把數據加載到DataSet中, conn.Close(); //我們可以在上面關閉的情況下,在DataTable和DataSet中找到數據來使用。 // 3 :關於cmd的一些常用的方法。 // ExecuteScalar()+ 執行查詢,並返回查詢所返回的結果集中第一行的第一列。 忽略其他列或行。 object rowColumn = cmd.ExecuteScalar(); // ExecuteNonQuery() +對連接執行 Transact-SQL 語句並返回受影響的行數。 int row=cmd.ExecuteNonQuery(); // ExecuteReader() +將 CommandText 發送到 Connection並生成一個 SqlDataReader並返回。 SqlDataReader sqa = cmd.ExecuteReader(); conn.Close(); } }