C 中資料庫的運用

2021-07-07 07:21:04 字數 4018 閱讀 3110

在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,...