志銘-2021年12月7日 21:22:15
關於使用MSSM訪問Oracle資料庫
- 安裝訪問介面元件:OraOLEDB.Oracle
- 官網可以下載,但是需要註冊
- 下載地址:https://pan.baidu.com/s/1OpYmpReEJcPg4wNESWy61Q
- 要求伺服器至少安裝. net2.0和. net3.5
- 我參考的教程:http://www.manongjc.com/article/11212.html
- 我本機win10,SQLSERVER2019
- 安裝該教程中需要注意的是:
-
在修改了環境變數後,不需要修改登錄檔的操作
-
建立連結伺服器時,資料來源引數IP/sid ,不需要使用埠
-
參考2: https://blog.csdn.net/weixin_42996498/article/details/88717706
-
關於. 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; conn.Open(); 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; conn.Open(); 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; } } } }