zoukankan      html  css  js  c++  java
  • .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
                }
  • 相关阅读:
    ArcEngine 里面的日期
    ArcEngine连接Oracle数据库
    ArcGIS连接Oracle数据库
    ms sql 带自增列 带外键约束 数据导入导出
    获取指定 MethodInfo 的 MSIL 或者 C# 源码
    架构知识集锦
    ClickOnce手动更新
    委托简单例子
    C# 多线程编程之锁的使用【互斥锁(lock)和读写锁(ReadWriteLock)】
    可扩展类库强制取消异步调用
  • 原文地址:https://www.cnblogs.com/gdjlc/p/10965845.html
Copyright © 2011-2022 走看看