.net连接Oracle

通过网上了解到.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
            }

猜你喜欢

转载自www.cnblogs.com/gdjlc/p/10965845.html