備忘錄:關於.net程序連接Oracle數據庫


志銘-2021年12月7日 21:22:15

關於使用MSSM訪問Oracle數據庫



關於. net 程序中連接Oracle數據庫

  • 使用Oracle.ManagedDataAccess.Client.dll

    • 該程序集對.net無版本要求
    • nuget:Install-Package Oracle.ManagedDataAccess -Version 19.13.0
    • 注意我沒有使用最新21.4.0版本,該最新版本依賴另外一個類庫System.Text.Json (>= 5.0.2),而且對.net版本有要求
  • 注意:注意不要使用System.Data.OracleClient,vs會提示過時

  • 關於Oracle數據庫連接字符串格式參考:

    <connectionStrings>
    	<add name="connStringForOracle" connectionString="user id=用戶ID;password=密碼;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=服務IP地址)(PORT=端口號))(CONNECT_DATA=(SERVER=服務名)(SERVICE_NAME=服務名)))" />
    </connectionStrings>
    
  • 簡易的封裝一個Oracle輔助類:

    //添加命名空間:using Oracle.ManagedDataAccess.Client;
    public class OracleHelper
    {
        private static readonly string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connStringForOracle"].ToString();
    
    
        //創建連接對象
        public static OracleConnection GetConn()
        {
            var conn = new OracleConnection(connectionString);
            conn.Open();
            return conn;
        }
    
        //執行非查詢語句返回受影響行數
        public static int ExecuteNoQuery(string sql,CommandType type=CommandType.Text,params SqlParameter[] param)
        {
            using (var conn = GetConn())
            {
                using (OracleCommand cmd=new OracleCommand (sql,conn))
                {
                    if (null!=param)
                    {
                        cmd.Parameters.AddRange(param);
                    }
                    cmd.CommandType = type;
                    return cmd.ExecuteNonQuery();
                }
            }
        }
    
        //返回查詢結果的第一行第一個單元格的數據
        public static object ExecuteScalar(string sql,CommandType type=CommandType.Text,params SqlParameter[] param)
        {
            using (var conn = GetConn())
            {
                using (OracleCommand cmd=new OracleCommand(sql,conn))
                {
                    if (null!=param)
                    {
                        cmd.Parameters.AddRange(param);
                    }
                    cmd.CommandType = type;
                    return cmd.ExecuteScalar();
                }
            }
        }
    
        //返回查詢結果集
        public static DataSet GetDataSet(string sql, CommandType type = CommandType.Text, params SqlParameter[] param)
        {
            using (var conn = GetConn())
            {
                using (OracleDataAdapter adapter = new OracleDataAdapter(sql, conn))
                {
                    if (null != param)
                    {
                        adapter.SelectCommand.Parameters.AddRange(param);
                    }
                    adapter.SelectCommand.CommandType = type;
                    DataSet ds = new DataSet();
                    adapter.Fill(ds);
                    return ds;
                }
            }
        }
    }
    
  • 使用TNS方式連接 ,其網絡服務器名稱,和程序中配置文件的連接字符串格式類似
    • 連接名:自定義即可
    • 連接類型:TNS
    • 網絡服務名稱:(DESCRIPTION =(ADDRESS=(PROTOCOL=TCP)(HOST =XXX.XXX.XXX.XXX)(PORT =1521))(CONNECT_DATA =(SERVICE_NAME=服務器名稱)))
    • 用戶名
    • 密碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM