訪問資料庫是大多數應用程式的一部分,而且隨著c#和ado.***的發布,
這個過程已經變得相當的簡單.本文將展示下面四個基本的資料庫操作:
1.讀資料.這包括諸如整數,字串和日期等不同的資料型別.
2.寫資料.就象讀資料一樣我們會寫這些通常的資料型別.這是通過sql語
句來實現的.
3.更新或是修改資料.我們還是使用簡單sql語句.
4.刪除資料.使用sql.
這些操作是對乙個微軟access 2000資料庫進行的,但是sql或是其它
ado資料來源可以通過簡單的改變連線字串來使用.
開始第一步
為了使用ado類,我們需要包括進ado.***命名空間(namespace)和一些
精巧的日期類.在你要進行資料庫操作的地方加入下列幾行**.它應該被
放置在命名空間引入**行的下面而在類定義的上面.
using system.data; // 申明變數
using system.data.ado; // 資料庫
using system.globalization; // 日期
根據你所參與的工程的型別,你可能需要增加對system.data命名空間的
引用.你可以根據在你新增上面的**以後編譯器是否產生錯誤來判斷.要
新增system.data命名空間,你可以:
1.在solution explorer-references 分支中右鍵單擊.
2.選擇"新增引用"
3.選擇.*** framework標籤.
4.雙擊system.data.dll條目
5.單擊ok
6.system.data現在應該出現在了solution explorer的引用列表中
了.因為連線字串在大多數操作中都要使用,所以我建議你將它設定成你要
編寫的類的成員.注意:在你的程式中,資料庫檔案的路徑有可能不同.
//屬性
public const string db_conn_string =
"driver=; "+
"dbq=d://cs//testdbreadwrite//******test.mdb";
讀資料現在一切都變得有趣起來.讀資料可以通過adodatareader類來實現.
(參看chris maunder的文章"ado.*** adodatareader類"來獲取關
於這個類的更多資訊.)讀資料的步驟如下:
1.我們用adoconnection來開啟乙個資料庫.
adoconnection conn =
new adoconnection(db_conn_string);
conn.open();
2.我們編寫乙個sql語句來定義將要取出的資料.這個資料執行的結果是
返回乙個adodatareader 物件.注意execute方法中的out關鍵字.這在
c#中意味著通過引用傳遞引數.
adodatareader dr;
ado***mand cmd =
new ado***mand( "select * from person", conn );
cmd.execute( out dr);
3.我們迴圈遍歷adodatareader中的每乙個記錄直到我們完成要做的工
作.注意:資料被直接作為乙個字串返回同時資料網域名稱稱用來指明讀的數
據域.while( dr.read() )
4.我們收工
但是,作為好的程式設計師我們還需要加進許多try/catch/finally語句來
確保我們處理了所有的錯誤.
trycatch( exception ex )
finally
讀取不同的資料型別
dr["stuff"]這個語句通常能夠返回乙個資料.但是要返回乙個int或者
datetime物件的話通常需要進行資料轉換.這通常可以通過使用
adodatareader許多內建轉換器中的乙個來實現.也就是:
int nordinalage = dr.getordinal( "age" );
int nage = dr.getint32( nordinalage );
datetime tupdated = (datetime)dr["updated"];
注意getordinal定位資料域用名字來讀取資料的用法.如果資料域是空
白的(還沒有填入任何資料),上面的**會丟擲乙個異常.要捕捉這種情
況,我們可以用isnull方法檢查是否有資料存在,如下所示:
int nordinalage = dr.getordinal( "age" );
if( dr.isnull( nordinalage ) )
else
插入,修改,刪除和其他sql命令
插入,修改,刪除過程可以非常容易的通過sql語句來實現.下面的**執
行一條sql命令來插入一條記錄.
// sql 命令
string ssql***mand =
"insert into person (age, firstname, description,
updated) " +
"values( 55, 'bob', 'is a penguin', '2001/12/25 20:30:15' );";
// 建立***mand物件
ado***mand cmdadder = new ado***mand(
ssql***mand,
db_conn_string);
cmdadder.activeconnection.open();
// execute the sql ***mand
int nnoadded = cmdadder.executenonquery();
system.console.writeline(
"/nrow(s) added = " + nnoadded + "/n" );
注意:try/catch**沒有在上面的例子裡出現,但是應該包括上面的代
碼.插入
上面的**通過建立乙個sql命令然後執行它來插入一條記錄.一些在編
寫sql命令時應注意的事項如下:
1.數值資料應該直接表示.沒有單引號(').
2.字串的表示應該包括在單引號中('blah').
3.確保字串中不包含任何嵌入的單(雙)引號.這會使事情混淆.
4.日期和時間資料用包裹在單引號中的國際通用形式來表示
('yyyy/mm/dd hh:mm:ss').
修改update命令指明要修改的資料和修改的動作.executenonquery()的返
回值指出改變的記錄的個數,所以如果有5個peter's在表單中的話下面
的**將返回5.
string ssql***mand =
"update person set age = 27 where firstname = 'peter'";
刪除delete命令指明要刪除的記錄.executenonquery()的返回值指出改變
的記錄的個數,所以如果有2個bobo在表單中的話下面的**將返回2.兩
個bobo都會被刪除.
string ssql***mand =
"delete from person where firstname = 'bobo'"";
資料庫操作(ADO)
qtp工具本身自帶有資料查詢和驗證功能,但是使用的人會感覺這個功能使用起來比較麻煩,靈活性和復用性較低,於是我們選擇了用指令碼呼叫ado元件實現資料庫的操作,現總結下工作中用到的資料庫操作,如下 一 最常用的資料庫取值操作 獲取資料庫查詢語句 sql select from user where n...
ADO 資料庫操作
1.準備工作 1 把下面兩局 寫進stdafx.h裡。位置是倒數第二行,或者 include mfc 自動化類 這句的後面。別的位置沒試過 如果改變了位置,要先清理解決方案,再重新生成解決方案 import c program files common files system ado msado1...
VB使用ADO操作Access資料庫
這裡只是個簡單不能再簡單的vb小程式例項,但它包含這幾個關鍵字 vb6.0 ado access 環境 visual basic 6.0 企業版 非精簡版,不然會缺少必須的控制項 資料庫 access資料庫,資料庫是xs.mbd,內建表為xj 結果 vb使用ado連線access資料庫,查詢xj表中...