c#远程链接oracle(本地无oracle客户端)

个人操做系统是win10 x64 ,服务器oracle版本是g11html

服务器上oracle作一些配置sql

而后更改tnsnames.ora数据库

添加你的配置服务器

个人例如:oracle

ddd=zkrOracle108 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.51.108)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = DB11G)

    )
  ) 

配置环境变量spa

 NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 操作系统

采用OracleClient进行链接数据库debug

在oracle官网上下载Instant Client 程序包3d

地址:http://www.oracle.com/technetwork/cn/topics/winx64soft-101515-zhs.htmlcode

而后放到最后生成的dll文件夹中,例如debug

而后程序代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OracleClient;
using System.Configuration;
using System.Data;
namespace ConsoleDBTool
{
    class Program
    {
        static void Main(string[] args)
        {
            string connstr = ConfigurationManager.ConnectionStrings["ORACLEConnectionString"].ConnectionString;
            //todo:SERVER写成SERVER_NAME会报出 ORA-12514: TNS: 监听程序当前没法识别链接描述符中请求的服务
            //password错误会提示:ORA-01017: 用户名/口令无效; 登陆被拒绝 
            //没有写(SID = DB11G)会提示:ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未得到 SERVICE_NAME
            //没写(SERVER=DEDICATED)会提示:妈的!能够成功返回
            //没写DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.51.108)(PORT = 1521)))  ORA-12533: TNS: 非法的 ADDRESS 参数
            //HOST地址配错通常会提示链接超时
            //从网上复制的这种 string sqlcon = @"Data Source=TestDB;Persist Security Info=True;User ID=tanyixiu;Password=pwd;Unicode=True";,他妈的绝对是不行的!
            //只要提示是DRA开头,说明你已经和oracle发生“握手”了,若是出现System.Data.OracleClient 须要 Oracle 客户端软件 version 8.1.7 或更高版本说明没有完成Instant Client的安装或环境变量的配置
            //从昨天下午开始搞这个,到16:00才连上oracle,我以为是上帝玩够了,不想和你开玩笑了,因此你就成功了。
            //var connectionString = @"Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.51.108)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SID = DB11G)));User Id=123;Password=123;Persist Security Info=True;";//

            OracleConnection oc = new OracleConnection(connstr);
            oc.Open();
            OracleDataAdapter od = new OracleDataAdapter("select * from dir_test", connstr);
            DataSet ds = new DataSet();
            od.Fill(ds);
            Console.WriteLine("数据库链接成功");
        }
    }
}

config:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
  <connectionStrings>
    <add name="ORACLEConnectionString" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.51.108)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SID = DB11G)));User Id=123;Password=123;Persist Security Info=True;"/>
  </connectionStrings>
</configuration>
相关文章
相关标签/搜索