System.Data.OleDb:OLE DB 資料提供者,支援 Access、SQL Server 等。
System、System.Data.OleDb、System.Windows.FormsOleDbConnectionOleDbCommandOleDbDataReader / DataSet)
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\my.mdb";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
string sql = "SELECT * FROM Customers WHERE City = 'Taipei'";
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
using (OleDbDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
Console.WriteLine($"{dr["Name"]}, {dr["Phone"]}");
}
}
string connStr = "Provider=SQLOLEDB;Server=192.168.1.100;Database=Northwind;Uid=sa;Pwd=pass;";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
// 參數化查詢防止 SQL Injection
string sql = "INSERT INTO Orders (CustomerID, OrderDate) VALUES (?, ?)";
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@cust", "ALFKI");
cmd.Parameters.AddWithValue("@date", DateTime.Now);
int rows = cmd.ExecuteNonQuery();
Console.WriteLine($"異動筆數: {rows}");
}
}
string sql = "SELECT * FROM Products";
using (OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr))
{
DataSet ds = new DataSet();
da.Fill(ds, "Products");
// 離線修改
ds.Tables["Products"].Rows[0]["UnitPrice"] = 99.9;
// 更新回資料庫
new OleDbCommandBuilder(da); // 自動產生 Insert/Update/Delete 命令
da.Update(ds, "Products");
}
using 確保連線關閉,即使發生例外。App.config connectionStrings 區段,勿硬編碼。System.Data.SqlClient(現 Microsoft.Data.SqlClient),效能與功能更完整。