使用 System.Data.OracleClient 連接 Oracle,涵蓋 **DataSet 離線模式**、**DataReader 串流模式**、**Command 執行非查詢** 三大核心場景,代碼開箱即用。
// 1. 專案引用 System.Data.OracleClient.dll
// 2. 頂部引入命名空間
using System.Data.OracleClient;
// 建立連接
OracleConnection oraCon = new OracleConnection("user id=112;data source=wmatech;password=112");
// 建立適配器
OracleDataAdapter oraDap = new OracleDataAdapter("select * from actor", oraCon);
// 填充 DataSet
DataSet ds = new DataSet();
oraDap.Fill(ds);
// 取首個 DataTable
DataTable dt = ds.Tables[0];
int rowCount = dt.Rows.Count;
// 綁定 DataGrid
DataGrid1.DataSource = dt;
DataGrid1.DataBind();
Fill 會自動開啟/關閉連接,無需手動 Open/Close。OracleConnection oraCon = new OracleConnection("user id=112;data source=wmatech;password=112");
OracleCommand oraCmd = new OracleCommand("select * from actor", oraCon);
oraCon.Open();
OracleDataReader oraRD = oraCmd.ExecuteReader();
string html = "";
while (oraRD.Read()) {
html += oraRD[0] + " " + oraRD[1] + " " + oraRD[2] + "
";
}
oraRD.Close(); // 必須關閉 Reader
oraCon.Close(); // 釋放連接
Response.Write(html);
ExecuteReader 返回 OracleDataReader,**必須显式關閉** Close() 才能釋放連接池資源。OracleConnection oraCon = new OracleConnection("user id=112;data source=wmatech;password=112");
OracleCommand oraCmd = new OracleCommand("update actor set name='123453' where id='admin'", oraCon);
oraCon.Open();
int affectedRows = oraCmd.ExecuteNonQuery(); // 返回影響行數
Response.Write(affectedRows.ToString());
oraCon.Close();
ExecuteNonQuery 用於非查詢 SQL,返回受影響行數(int)。oraCmd.Parameters.Add 防注入、提升效能。OracleConnection oraCon = new OracleConnection(connStr);
oraCon.Open();
OracleTransaction tx = oraCon.BeginTransaction();
try {
OracleCommand cmd = oraCon.CreateCommand();
cmd.Transaction = tx;
cmd.CommandText = "update ..."; cmd.ExecuteNonQuery();
cmd.CommandText = "insert ..."; cmd.ExecuteNonQuery();
tx.Commit();
} catch {
tx.Rollback(); throw;
} finally {
oraCon.Close();
}
OracleTransaction 確保多條 SQL 原子性,**生產環境批量寫入必用**。
| 屬性 | 說明 |
|---|---|
| User ID / Password | 認證憑證 |
| Data Source | TNS 別名或 EZ Connect 字串 |
| Pooling | 連接池開關 (預設 true) |
| Min/Max Pool Size | 池大小限制 |
| Connection Lifetime | 連接生存時間(秒) |