● 讀取數據其中包括多種數據類型整型字符串日期型
● 寫數據如讀數據一樣我們也需要寫入多種類型的數據這可以通過SQL語句來完成
● 更新或修改數據我們將再次用到SQL語句
● 刪除數據用SQL實現
上述的操作都要基於Microsoft Access 數據庫但是我們要對連接字符串進行簡單的修改才能使用SQL或其他ADO數據
開始操作
在使用ADO類之前我們將把ADONet的命名空間和一些常用數據類包括進來把下面的代碼加入到你想進行數據庫操作的地方它的具體位置應該是命名空間行之後類聲明之前
using SystemData; // State variables
using SystemDataADO; // Database
using SystemGlobalization; // Date
你或許還要向SystemData命名空間添加參數這取決於工程的類型需要你所添加的代碼的編譯信息會提醒你這一點添加SystemData命名空間的操作
● 右鍵點擊Solution explorer參數選項
● 選擇添加參數
● 選擇Net框架欄
● 雙擊Systemdatadll條目
● 選擇OK
● Systemdata應該出現在Solution explorer的參數列表中了
由於在多數操作中都會使用連接字符串所以我建議你將它包含在使用的類中
注意程序中數據庫文件的路徑可能和下面不一樣
//Attributes
public const string DB_CONN_STRING =
\Driver={Microsoft Access Driver (*mdb)}; \+
\DBQ=D:\\\\CS\\\\TestDbReadWrite\\\\SimpleTestmdb\;
讀取數據
現在的操作就比較有趣了讀是通過ADODataReader類完成的(參看Chris Maunder的文章\The ADONet ADODataReader CLASS\ 以了解更多)讀的操作步驟如下
● 用ADO連接打開數據庫
[Page]
ADOConnection conn = new ADOConnection(DB_CONN_STRING);
connOpen();
● 創建一個SQL語句來確認要獲取的數據這條命令執行後返回一個ADODataReader對象注意Execute方法中的OUT關鍵字這是C#中傳遞參數的方式
ADODataReader dr;
ADOCommand cmd = new ADOCommand( \SELECT * FROM Person\ conn );
cmdExecute( out dr);
● 循環遍歷ADODataReader中的每條記錄直到完成注意數據被作為字符串直接返回字段名顯示了要讀取的字段
while( drRead() )
{
SystemConsoleWriteLine( dr[\FirstName\] );
}
● 清除
但是作為優秀的程序員我們應該將代碼放在try/catch/finally 中確保我們能夠控制所有意外
try
{
the database operations
}
catch( Exception ex )
{
System
Console
WriteLine( \
READING:\
);
System
Console
WriteLine( \
ERROR:\
+ ex
Message );
System
Console
WriteLine( \
SQL :\
+ sSqlCmd );
System
Console
WriteLine( \
Conn
:\
+ DB_CONN_STRING );
}
finally
{
// Close the connection
if( conn
State == DBObjectState
Open )
conn
Close();
}
讀取不同的數據類型
[\stuff\]通常可以返回某個類型的字符串但是要獲取一個整型或 DateTime對象就需要列出這些數據以一個簡單的例子或是ADODataReade內建的很多例子中的一個就可以說明例如
int nOrdinalAge = drGetOrdinal( \Age\ ); [Page]
int nAge = drGetInt( nOrdinalAge );
DateTime tUpdated = (DateTime)dr[\Updated\];
注意通過名字定位GetOrdinal字段的用法如果字段是空的(沒有填入值)上面的代碼會引發一個異常這種情況下我們用IsNull方法檢驗數據是否存在
int nOrdinalAge = drGetOrdinal( \Age\ );
if( drIsNull( nOrdinalAge ) )
{
SystemConsoleWriteLine( \ Age : Not given!\ );
}
else
{
int nAge = drGetInt( nOrdinalAge );
SystemConsoleWriteLine( \ Age : \ + nAge );
插入修改刪除和其他SQL命令
插入修改和刪除用SQL語句很容易實現下面的代碼通過一個SQL命令插入一條記錄
// SQL command
String sSQLCommand = \INSERT INTO Person (Age FirstName
Description Updated) \ +
\VALUES( Bob Is a Penguin
// :: );\;
// Create the command object
ADOCommand cmdAdder = new ADOCommand(
sSQLCommand
DB_CONN_STRING);
cmdAdderActiveConnectionOpen();
// Execute the SQL command
int nNoAdded = cmdAdderExecuteNonQuery();
SystemConsoleWriteLine( \\\nRow(s) Added = \ + nNoAdded + \\\n\ );
注意try/catch並未出現在上述例子中實際上是需要寫的
插入
上述代碼通過一條SQL語句插入一條記錄這條命令稍後執行命令格式中需要注意的是
[Page]
● 數值直接賦值不同單引號();
● 字符串必須用單引號括起來 (blah)
● 字符串中不能包含任何單引號或是雙引號
● 日期和時間都要以國際格式包括在單引號中(YYYYY/MM/DD HH:MM:SS)
修改
UPDATE命令指示了要被修和已做修改的記錄ExecuteNonQuery()返回的值顯示變化的紀錄的數目這樣如果在表格中有個Peter那它就會返回
String sSQLCommand = \UPDATE Person SET Age = WHERE FirstName = Peter\;
刪除
DELETE命令顯示要被刪除的紀錄這可能會是幾條ExecuteNonQuery()返回的值顯示變化的紀錄的數目這樣如果表中有個Bobo就返回這兩個Bobo都會被刪除
String sSQLCommand = \DELETE FROM Person WHERE FirstName = Bobo\;
關於樣例程序
樣例是個簡單的控制程序它執行Microsoft Access數據庫中提供的所有操作在Visual StudioNet IDE將TestDbReadWritecsproj 作為工程文件打開就可以編譯它在MainConsolecs中改變DB_CONN_STRIN的值讓其指向SimpleTestmdb編譯它
結論
現在你可以在C#中執行基礎數據庫操作了找時間學學SQL也要多讀些有關它工作原理的文章
From:http://tw.wingwit.com/Article/program/net/201311/11656.html