首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

使用 ODP.NET (Oracle.DataAccess) 直連 Oracle 10g 資料庫完整範例

     編輯:Oracle 資料庫基礎

環境需求與 DLL 部署

  • Oracle 版本:10g
  • 引用組件:Oracle.DataAccess.dll (版本 2.112.1.2)
  • 執行時需將以下 DLL 複製至程式輸出目錄 (如 bin\Debug) 與 .exe 同層:
    Oracle.DataAccess.dll、oraociei11.dll、oraops11w.dll 等 Instant Client 核心庫。

關鍵點: 必須使用 Oracle.DataAccess.Client 命名空間,而非 Microsoft 已淘汰的 System.Data.OracleClient。

核心程式碼實作 (C#)

1. 建立資料庫連線字串與連線物件

using System;
using System.Data;
using Oracle.DataAccess.Client;

private OracleConnection GetOracleConnection()
{
    string connString = 
        "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.152)(PORT=1521))" +
        "(CONNECT_DATA=(SID=orcl)));User Id=SmartDB;Password=zz;";
    // 實務上建議將連線字串存放於 Web.config / App.config 中
    return new OracleConnection(connString);
}

2. 執行非查詢命令 (INSERT/UPDATE/DELETE)

private void Oracle_ExecuteNonQuery(string sql)
{
    using (OracleConnection conn = GetOracleConnection())
    {
        try
        {
            conn.Open();
            using (OracleCommand cmd = new OracleCommand(sql, conn))
            {
                cmd.ExecuteNonQuery();
            }
        }
        catch (Exception ex)
        {
            // 記錄日誌後再拋出,避免直接顯示錯誤細節給使用者
            throw;
        }
    } // using 區塊結束自動呼叫 conn.Close() 並釋放資源
}

3. 執行查詢並回傳 DataTable

private DataTable Oracle_ExecuteQueryToDataTable(string sql)
{
    DataTable dt = new DataTable();
    using (OracleConnection conn = GetOracleConnection())
    {
        try
        {
            conn.Open();
            using (OracleCommand cmd = new OracleCommand(sql, conn))
            using (OracleDataAdapter adapter = new OracleDataAdapter(cmd))
            {
                adapter.Fill(dt);
            }
            return dt;
        }
        catch (Exception ex)
        {
            // 可在此處記錄錯誤日誌
            throw;
        }
    }
}

最佳實務提醒

  • 善用 using 區塊確保連線、命令、DataReader 等非受控資源確定釋放。
  • 參數化查詢 (cmd.Parameters.Add(...)) 是防止 SQL Injection 的必要手段。
  • 連線字串勿硬編碼,應外部化設定並加密敏感資訊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved