C#利用ODP.net连接Oracle数据库
2023-03-31 11:11:18 时间
本文介绍了C#连接Oracle数据库的过程。通过instant client和ODP.net中的Oracle.DataAccess.dll,我们就可以方便的部署.net应用程序或者站点,而不需要安装Oracle客户端。接下来我们就介绍这一过程。
1. ODAC的安装
在oracle的官方网站上下载与你安装的oracle对应版本的ODAC。
下载地址:ODAC Download
下载好后解压安装,安装时不用安装全部的组件。主要安装以下组件:
- Oracle Instant Client
- Oracle Data Provider For .net2.0
- Oracle rovider For Asp .net
2. 环境变量的设置
设置Windows的环境变量:
ORACLE_HOME :ODAC的安装目录(类似 ~appAdministratorproduct11.1.0client_1);
LD_LIBRARY_PATH :%ORACLE_HOME%;
TNS_ADMIN : %ORACLE_HOME%;
在PATH的最前面追加:%ORACLE_HOME%;
3. 监听文件tnsnames.ora的配置
在目录%ORACLE_HOME%下新建文件tnsnames.ora,内容如下:
- 数据库SID =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = Oracle主机名或者IP)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = 数据库SID)
- )
- )
4. plsqldev
这样配置好后,plsqldev就可以连接上oracle数据库了。
5. C#连接Oracle
C#连接oracle的示例代码如下:
- OracleConnection conn =
- new OracleConnection();
- try
- {
- conn.ConnectionString = ConfigurationManager.ConnectionStrings["oradb"].ConnectionString;
- conn.Open();
- string sql = " select id,content from test"; // C#
- OracleCommand cmd = new OracleCommand(sql, conn);
- cmd.CommandType = CommandType.Text;
- OracleDataReader dr = cmd.ExecuteReader(); // C#
- List<string> contents = newList<string>();
- while(dr.Read())
- {
- contents.Add(dr["content"].ToString());
- }
- listBox1.ItemsSource = contents;
- }
- catch(Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- finally
- {
- conn.Clone();
- }
在程序app.config或者web.config中追加数据库连接的配置。
- <connectionStrings >
- <add name="oradb"connectionString="Data Source=(DESCRIPTION=
- (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)))
- (CONNECT_DATA=(SERVICE_NAME=****)));
- User Id=***;Password=***;"/>
- </connectionStrings>
按照上述的步骤执行,如果没有错误,就可以成功地连接数据库了。
【编辑推荐】
相关文章
- centos安装mysql
- 一种简单实用、支持动态扩缩容的分库分表方案
- 数据中心容灾精讲(常见的容灾建设模式)
- 字节流与字符流的区别
- 作为当前组提取的十进制数
- 结构体的起始地址是其最宽数据
- GO语言程序查询数据库字段为空遇到的几个问题总结
- 可以精确对应到Clientset中的数据
- Spring认证中国教育管理中心-Spring Data Redis框架教程一
- Spring认证中国教育管理中心-Spring Data Redis框架教程三
- AARRR模型的数据指标体系
- 写一个工具类-根据分钟片将一个按时间有序的List分片
- 零信任 UDP敲门SNAT漏洞解决方案
- nodeJS与MySQL实现分页数据以及倒序数据
- lammps教程:变量前缀v_/c_/f_的用法
- 接口幂等性的几种简单解决方案
- 二维数组与函数调用案例
- 矢量数据无损压缩传输-geobuf(java项目分享)
- UG NX二次开发(C#)-建模-计算两个组件之间的距离(最小值和定位点距离)
- 基础知识 | hex文件格式详解