经过网上了解到.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 便可。 sql
下面是用使用Oracle.ManagedDataAccess.Client链接Oracle例子:
一、配置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"/>
二、简单写了个数据库访问类OracelHelper.csoracle
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; } } } }
三、若是是使用Dapper,可参考上篇文章“.net4.0使用Dapper操做MySql”,部分代码稍微修改以下app
(1)Dapper封装spa
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查询.net
using (IDbConnection conn = DapperHelper.OracleConnection()) { string sqlCommandStr = @"select * from user"; List<User> userList = conn.Query<User>(sqlCommandStr).ToList(); //todo }