通过网上了解到.net连接Oracle主要有3种方法。
(1)System.Data.OracleClient
微软的System.Data.OracleClient可以直接引用,但是VS会提示“System.Data.OracleClient.OracleConnection”已过时。
(2)Oracle.DataAccess.Client
也叫ODP.net,是Oracle提供的数据库访问类库,不用安装Oracle客户端,只需要在oracle安装目录下找到Oracle.DataAccess.dll添加引用,但是缺点是要区分x86/x64版本。
(3)Oracle.ManagedDataAccess.Client
也是Oracle提供的数据库访问类库,无需安装oracle客户端,也不需要区分x86/x64版本,直接引用Oracle.ManagedDataAccess.dll 即可。
下面是用使用Oracle.ManagedDataAccess.Client连接Oracle例子:
1、配置Oracle连接字符串
本次例子是WinForm,app.config的Oracle连接字符串配置如下,关键信息:IP地址、服务名、用户名、密码。
<add key="OracleConn" value="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=user;Password=123456"/>
2、简单写了个数据库访问类OracelHelper.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Oracle.ManagedDataAccess.Client; using System.Data; namespace demo { public class OracelHelper { private static readonly string connectionString = System.Configuration.ConfigurationManager.AppSettings["OracleConn"].ToString(); public static OracleConnection GetConn() { var conn = new OracleConnection(connectionString); conn.Open(); return conn; } public static int ExecuteNonQuery(string sql) { using (var conn = GetConn()) { var cmd = new OracleCommand(sql, conn); int result = cmd.ExecuteNonQuery(); return result; } } public static int ExecuteScalar(string sql) { using (var conn = GetConn()) { var cmd = new OracleCommand(sql, conn); object o = cmd.ExecuteScalar(); return Convert.ToInt32(o.ToString()); } } public static OracleDataReader ExecuteReader(string sql) { var conn = GetConn(); var cmd = new OracleCommand(sql, conn); var myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return myReader; } public static DataSet ExecDataSet(string sql) { using (var conn = GetConn()) { var cmd = new OracleCommand(sql, conn); OracleDataAdapter da = new OracleDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); return ds; } } } }
3、如果是使用Dapper,可参考上篇文章“.net4.0使用Dapper操作MySql”,部分代码稍微修改如下
(1)Dapper封装
public class DapperHelper { public static OracleConnection OracleConnection() { string oracleConnectionStr = System.Configuration.ConfigurationManager.AppSettings["OracleConn"].ToString(); var connection = new OracleConnection(oracleConnectionStr); connection.Open(); return connection; } }
(2)使用Dapper进行select查询
using (IDbConnection conn = DapperHelper.OracleConnection()) { string sqlCommandStr = @"select * from user"; List<User> userList = conn.Query<User>(sqlCommandStr).ToList(); //todo }