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 @   竹殇  阅读(276)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示