C#中數據庫的運用

在c#中對數據的管理c# 可以有數據庫,文件(如xml文件,txt文件),還有一些如容器類。其中數據庫的操作相對便捷,安全。
下面我們討論如何在程序中使用數據庫。將數據庫加入程序中一般來說分爲以下三個步驟。
1、連接數據庫:建立SqlConnection對象來連接數據庫;
2、執行sql語句:指定SqlCommand對象,進行sql的執行和存儲過程的調用;
3、返回結果:一般使用SqlDataReader或者DataSet聯合SqlDataAdapter。

Connection 對象提供與數據源的連接。
Command對象使您能夠訪問用於返回數據、修改數據、運行存儲過程以及發送或檢索參數信息的數據庫命令。
DataReader 對象從數據源中提供快速的,只讀的數據流。
DataAdapter 對象提供連接 DataSet 對象和數據源的橋樑。DataAdapter 使用 Command 對象在數據源中執行 SQL 命令,以便將數據加載到 DataSet 中,並使對 DataSet 中數據的更改與數據源保持一致。

在我們討論SqlConnection之前需要了解一個重要內容,連接字符串。
那麼什麼是連接字符串呢?就是這樣一組被格式化的鍵值對:
它告訴ADO.NET數據源在哪裏,需要什麼樣的數據格式,提供什麼樣的訪問信任級別以及其他任何包括連接的相關信息。
語法:連接字符串由一組元素組成,一個元素包含一個鍵值對,元素之間由“;”分開。

(1)標準的安全連接

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPass
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;

(2)可信連接

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

在我們實際開發中,我們一般不會把連接字符串直接寫在代碼中,而是存儲在配置文件裏。把連接字符串寫死在代碼中,不便於維護,每次修改字符串時,還得重新編譯代碼。以ASP.NET應用程序爲例,我們一般把連接字符串寫在web.config配置文件的節點。例如:

<connectionStrings>
  <add name="connStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=SSPI" />
</connectionStrings>

因此,我們只需要在程序中添加相應代碼來獲取配置文件中的值,比如:

string connStr=
ConfigurationManager.ConnectionStrings["connStr"].ToString(); 

一、SqlConnection對象。
語法: public sealed class SqlConnection : DbConnection, ICloneable
表示 與SQL Server 數據庫的連接。 此類不能被繼承。
命名空間: System.Data.SqlClient
程序集: System.Data(在 System.Data.dll 中)
SqlConnection 對象表示與 SQL Server 數據源的一個唯一的會話。 在客戶端/服務器數據庫系統中,它等效於一個到服務器的網絡連接。 SqlConnection 與SqlDataAdapter和SqlCommand 一起使用,以便在連接到 Microsoft SQL Server 數據庫時提高性能。

using (SqlConnection connection = new SqlConnection(
               connectionString))

關於這個類以下三個方法是必須瞭解的
Open: 使用 ConnectionString 所指定的設置打開數據庫連接。
Dispose: 釋放由 Component 使用的所有資源。
Close: 關閉與數據庫的連接。 此方法是關閉任何已打開連接的首選方法。Close 方法回滾任何掛起的事務。 然後,它將連接釋放到連接池,或者在連接池被禁用的情況下關閉連接。
除了在使用完資源後人爲的釋放掉使用資源關閉連接外,我們有一種更爲優雅的方式,那就是使用using語句句柄託管資源。

二、SqlCommand對象
命名空間: System.Data.SqlClient
程序集: System.Data(System.Data.dll 中)

應該如何將數據交給SqlCommand對象呢?
(1)通過構造函數。代碼如下:

string strSQL = "Select * from tb_SelCustomer";
SqlCommand cmd = new SqlCommand(strSQL, conn);

(2)通過Command對象的屬性。代碼如下:

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = strSQL;

常用方法:
1、ExecuteNonQuery()  增刪改操作
2、ExecuteScalar()   返回第一行第一列
3、ExecuteReader()  創建一個SqlDataReader用於讀取數據
4、ExecuteXmlReader()  返回System.XmlReader實例,用於讀取SQLServer中的XML字段的值
5、BeginExecuteNonQuery() 異步版ExecuteNonQuery()
6、EndExecuteNonQuery()  異步版ExecuteNonQuery()
文檔參考:
http://www.cnblogs.com/kissdodog/archive/2013/09/23/3334579.html
它封裝了所有對外部數據源的操作(包括增、刪、查、改等SQL語句與存儲過程),並在執行完成後返回合適的結果。

三、SqlDataReader和DataSet+SqlDataAdapter
兩者間的區別:
1、SqlDataReader //基於連接,只讀訪問 適合數據量較小。
SqlDataAdapter //基於非連接,適於數據量較大時,可以另行修改,最後再把修改結果返回給數據庫。要求資源也大一點
2、SqlDataAdapter 讀取數據後將數據集放入DataSet ,DataSet 的數據存在本地客服機內存。
3、SqlDataReader返回的是一個數據讀寫器,只能一條條的讀,操作起來不靈活,一般在只讀的時候纔用到。
SqlDataAdapter返回的是數據集或者表,可以對其中的數據作任意操作
4、寫法上不同:
SqlDatReader執行前須先打開數據庫,然後鬚生成一個COMMAND對象。再由COMMAND.EXECUTEREADER()方法賦值。完成後須手動關閉聯接。
SqlCommand cmd = new SqlCommand(“select * from stu”, conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
conn.close();
SqlDataAdapter 執行時,自動打數據庫,且不用Command的ExecuteReader方法進行賦值,完成後自動斷開聯接。

SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adptr.Fill(ds, "stu");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章