在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配置檔案的節點。例如:
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()
文件參考:
它封裝了所有對外部資料來源的操作(包括增、刪、查、改等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");
資料庫中的ExecuteScalar運用
資料庫中的executescalar運用,常常與聚合函式一起使用,用於統計資料庫中的某個欄位的個數,最大值,最小值,平均值等。下面就是統計登錄檔中的使用者個數 using system using system.collections.generic using system.data.sqlcli...
larbin中運用資料庫mysql
larbin這個程式只負責採集原始資料,並沒有對資料進行處理,不過可以自己建立資料庫,方便下一步的處理。對mysql資料庫的連線和相關已經之前的文章中有所介紹了,這裡不再累贅,只是說明編譯的時候需要注意的地方。在需要資料庫操作的程式 中加入mysql.h 標頭檔案。在src makefile 中 加...
MySQL 資料庫中資料型別的合理運用
基本語法 bit m 位欄位型別。m表示每個值的位數,範圍從1到64。如果m被忽略,預設為1。插入乙個數字試一試 插入 10,10 我們發現,插入的bit型別的10變成了空的。例 float float m,d unsigned m指定顯示長度,d指定小數字數,占用空間4個位元組。首先插入資料 3,...