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

C# 使用 OracleClient 連接 Oracle 資料庫查詢與更新範例

     編輯:Oracle 資料庫基礎

前言

.NET Framework 內建的 System.Data.OracleClient 雖已標記為過時,但在維護舊專案時仍常見。本文示範 WinForms 專案中連接 Oracle、執行查詢與更新的完整程式碼結構,並強調資源釋放的最佳實務。

專案準備

  1. 參考加入 System.Data.OracleClient.dll。
  2. 引入命名空間:using System.Data.OracleClient;

連線字串格式

string connStr = "Data Source=ORCL;User Id=scott;Password=tiger;";

Data Source 可為 tnsnames.ora 別名或 Easy Connect 字串(如 //host:1521/ORCL)。

查詢資料範例

private void QueryData()
{
    string sql = "SELECT name FROM fin_ipr_inmaininfo WHERE card_no = :cardNo";
    using (var conn = new OracleConnection(connStr))
    using (var cmd = new OracleCommand(sql, conn))
    {
        cmd.Parameters.Add(":cardNo", "0000000002");
        try
        {
            conn.Open();
            using (var reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    this.lbl.Text = reader.GetString(0); // 或 reader["name"].ToString()
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("查詢錯誤:" + ex.Message);
        }
    } // using 區塊結束自動關閉連線與釋放資源
}

更新資料範例

private void UpdateData()
{
    string sql = "UPDATE fin_ipr_inmaininfo SET name = :newName WHERE card_no = :cardNo";
    using (var conn = new OracleConnection(connStr))
    using (var cmd = new OracleCommand(sql, conn))
    {
        cmd.Parameters.Add(":newName", "wzd");
        cmd.Parameters.Add(":cardNo", "0000000002");
        try
        {
            conn.Open();
            int rows = cmd.ExecuteNonQuery();
            MessageBox.Show($"更新筆數:{rows}");
        }
        catch (Exception ex)
        {
            MessageBox.Show("更新錯誤:" + ex.Message);
        }
    }
}

關鍵最佳實務

  • 參數化查詢:防止 SQL 注入,並讓優化器重用執行計畫。
  • using 陳述式:確保 Connection、Command、DataReader 正確 Dispose(),避免連線洩漏。
  • 例外處理:捕捉 OracleException 可取得錯誤代碼(如 ORA-01017)。
  • 新專案建議:改用 Oracle 官方維護的 Oracle.ManagedDataAccess (NuGet) 或 Dapper 搭配 Managed Driver,效能與相容性更佳。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved