範例使用 Access 2000,其他資料庫只需修改連接字串。
using System.Data;
using System.Data.OleDb; // ADO.NET OLE DB 提供者
using System.Globalization; // 日期處理
專案需加入參考:System.Data.dll
public const string DB_CONN_STRING =
"Driver={Microsoft Access Driver (*.mdb)}; " +
"DBQ=D:\\CS\\TestDbReadWrite\\SimpleTest.mdb";
// 1. 開啟連線
OleDbConnection conn = new OleDbConnection(DB_CONN_STRING);
conn.Open();
// 2. 執行查詢
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Person", conn);
OleDbDataReader dr = cmd.ExecuteReader();
// 3. 逐筆讀取
while (dr.Read())
{
Console.WriteLine(dr["FirstName"]); // 以欄位名稱存取
}
// 4. 關閉資源(建議用 try/finally)
finally
{
if (conn.State == ConnectionState.Open) conn.Close();
}
// 字串直接讀取
string name = dr["FirstName"].ToString();
// 整數需轉換
int ageOrdinal = dr.GetOrdinal("Age");
if (!dr.IsNull(ageOrdinal))
int age = dr.GetInt32(ageOrdinal);
// 日期
DateTime updated = (DateTime)dr["Updated"];
使用 GetOrdinal 取得欄位索引,IsNull 檢查 NULL 避免例外。
// 新增
string sql = "INSERT INTO Person (Age, FirstName, Description, Updated) " +
"VALUES (55, 'Bob', 'Is a Penguin', '2001/12/25 20:30:15')";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Connection.Open();
int rows = cmd.ExecuteNonQuery(); // 回傳影響筆數
// 修改
sql = "UPDATE Person SET Age = 27 WHERE FirstName = 'Peter'";
// 刪除
sql = "DELETE FROM Person WHERE FirstName = 'Bobo'";
'text''YYYY/MM/DD HH:MM:SS' 包單引號try
{
// 資料庫操作
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex.Message);
Console.WriteLine("SQL: " + sql);
Console.WriteLine("Conn: " + DB_CONN_STRING);
}
finally
{
if (conn.State == ConnectionState.Open) conn.Close();
}