Oracle - C#连接数据库

一.System.Data.OracleClient 微软提供的连接库,不过已经过时,不建议使用

二.Oracle.DataAccess.Client (ODP.Net) Oracle提供的数据库访问类库.

三.Oracle.ManagedDataAccess.dll (ODP.NET Managed) 也是Oracle提供的。

推荐使用方案3,但是使用ManagedDataAccess的话,必须添加对程序集“netstandard”的引用,而这个程序集又是FrameWork 4.6及以上才有的,

所以笔者这用的.net框架FrameWork 4.5的项目并不能使用, 采用方案二来处理,方案二是需要区分x86/x64版本的.

1.去官网下载需要的dll文件。

http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html 

下载对应的vs版本的dll文件,如果vs版本太低,就下载最老的dll文件,笔者下载的最老的: ODAC 11.2 Release 5 

在下载的ODTwithODAC1120320_32bit文件夹下找到所需的dll文件(jar压缩包用解压工具解压):

文件 路径 备注
oci.dll ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup2.jar 原文件叫oci.dll.dbl,把后面的扩展名去掉
ociw32.dll ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup2.jar 原文件叫ociw32.dll.dbl,把后面的扩展名去掉
Oracle.DataAccess.dll ~\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup2.jar  
orannzsbb11.dll ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup1.jar  
oraocci11.dll ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup3.jar  
oraociei11.dll ~\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup3.jar  
oraociicus11.dll ~\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup4.jar  
OraOps11w.dll ~\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup16.jar  

 将这些dll文件放到项目运行的bin目录下,和运行文件同一目录。

文件不齐全,引发错误:The provider is not compatible with the version of Oracle client 

缺少oraociei11.dll ,引发错误:ORA-12737: Instant Client Light: unsupported server character set %s

项目中添加Oracle.DataAccess.dll的引用

数据库连接语句:

  <connectionStrings>
    <add name="OracleConnString" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.161)(PORT=1521))(CONNECT_DATA=(SID=MyOracle)));Persist Security Info=True;User ID=system;Password=Sky312;"/>
  </connectionStrings>

C#调用:using Oracle.DataAccess.Client;

private readonly string connstr = ConfigurationManager.ConnectionStrings["OracleConnString"].ConnectionString;

string sql = "SELECT * FROM \"UserInfo\"   ";

OracleConnection connection = new OracleConnection(connstr);
connection.Open();
OracleCommand command = new OracleCommand(sql, connection);

DataTable table = null;

try
{
    OracleDataAdapter adapter = new OracleDataAdapter();
    adapter.SelectCommand = command;
    table = new DataTable();
    adapter.Fill(table);
}
catch
{
    throw;
}
finally
{
    command.Dispose();
    connection.Close();
    connection.Dispose();
}
dataGridView1.DataSource =
table;

查询

 

posted @ 2018-04-13 12:25  竹殇  阅读(264)  评论(0编辑  收藏  举报