在.NET中使用System.Data.OracleClient库链接Oracle数据库的步骤sql
1.下载并安装Instant Clientshell
Instant Client能够在Oracle官方网站下载到数据库
对于Windows,Instant Client有三种版本:vim
1)适用于 Microsoft Windows(32位)的 Instant Client函数
2)适用于 Microsoft Windows(64位)Itanium的 Instant Client网站
3)适用于 Microsoft Windows(x64)的 Instant Clientspa
能够经过在个人电脑上单击右键菜单中的属性中查看到本身电脑的处理器信息code
因为个人电脑是Win7 64位系统,所以我下载了第三个包orm
下载完毕后,解压缩并将里面的bin目录的地址添加到环境变量path中。字符串
再在环境变量中添加如下属性:
(我把解压缩的路径放到了D盘,解压缩后的文件夹名为instantclient_12_1)
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
TNS_ADMIN=D:\instantclient_12_1
LD_LIBRARY_PATH=D:\instantclient_12_1
2.使用Xshell4远程链接安装有Oracle的RedHat系统
须要输入如下项:
1)Name:本身起个名字
2)Protocol:选择SSH
3)Host:目标主机IP
4)Port Number:端口号(22)
5)登陆的用户名/密码
附:Linux中登陆数据库的命令为
sqlplus 用户名/口令@数据库名
3.获取链接字符串
查找ORACLE安装地址
Linux命令:echo $ORACLE_HOME
tnsnames.ora位于目录
$ORACLE_HOME\network\admin\
用vim打开tnsnames.ora后,发现Oracle数据库的配置以下:
xtcsjk = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 171.0.0.132)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = testdb) ) )
根据这个文件,就能够写出链接这个Oracle数据库的链接字符串了
Data Source= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=171.0.0.132) (PORT=1521) ) ) (CONNECT_DATA= (SERVICE_NAME=TESTDB) ) ); Persist Security Info=True; User Id=用户名; Password=密码
4.程序代码
注:运行下面这段代码,须要
1)手动添加对库System.Data.OracleClient的引用
2)在程序集→右键→属性→生成中,把目标平台由AnyCPU改成x64
不然会报异常BadImageFormatException(兼容性问题)
3)若是没有完成Instant Client的安装或环境变量的配置,运行时会报异常信息:
System.Data.OracleClient 须要 Oracle 客户端软件 version 8.1.7 或更高版本
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //Method1函数调用的库,须要手动添加引用 using System.Data.OracleClient; namespace OracleTest { class Program { //从Oracle数据库中读取时间信息 static void ReadFromOracleTest() { string conn = string.Concat( @"Data Source=", @" (DESCRIPTION=", @" (ADDRESS_LIST=", @" (ADDRESS=", @" (PROTOCOL=TCP)", @" (HOST=171.0.0.132)", @" (PORT=1521)", @" )", @" )", @" (CONNECT_DATA=", @" (SERVICE_NAME=TESTDB)", @" )", @" );", @"Persist Security Info=True;", @"User Id=用户名;", @"Password=密码" ); //OracleConnection 被标注为已过期 OracleConnection oc = new OracleConnection(conn); try { oc.Open(); //OracleCommand 被标注为已过期 OracleCommand cmd = oc.CreateCommand(); cmd.CommandText = "select sysdate from dual"; OracleDataReader odr = cmd.ExecuteReader(); while (odr.Read()) { Console.WriteLine(odr.GetOracleDateTime(0).ToString()); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { oc.Close(); } } static void Main(string[] args) { ReadFromOracleTest(); Console.ReadLine(); } } }
5.运行示例
END