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

摘要:
//如果提示以DRA开头,则表示您已与Oracle“握手”。如果System.Data。OracleClient需要Oracle客户端软件版本8.1.7或更高版本,这意味着尚未完成InstantClient的安装或环境变量的配置。

我的操作系统是win10 x64 ,服务器oracle版本是g11

服务器上oracle做一些配置

然后更改tnsnames.ora

添加你的配置

我的例如:

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

    )
  ) 

配置环境变量

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

采用OracleClient进行连接数据库

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

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

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

c#远程连接oracle(本地无oracle客户端)第1张

然后程序代码

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Data.OracleClient;
usingSystem.Configuration;
usingSystem.Data;
namespaceConsoleDBTool
{
    classProgram
    {
        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 = newOracleConnection(connstr);
            oc.Open();
            OracleDataAdapter od = new OracleDataAdapter("select * from dir_test", connstr);
            DataSet ds = newDataSet();
            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>

免责声明:文章转载自《c#远程连接oracle(本地无oracle客户端)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EasyExcel导出带下拉框,并解决导出之后打开总是显示发现不可读取内容adb 连接 Android 手机的两种方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle快速测试连接是否成功

  Oracle 客户端建立了TNS连接后,可以快速查看连接是否成功。 1.在cmd中执行命令tnsping orcl(全局数据库名称),即可。以下是命令执行后的示例。   2.如果上一步成功,可以进一步执行数据库相关操作命令。 在cmd中先执行命令:sqlplus system/password orcl,之后就可以输入sql命令了,例...

android 系统log文件路径

http://87426628.blog.163.com/blog/static/60693618201310187938621/ 手机的默认的日志目录:  /data/local/tmp/* /data/tmp/* /data/system/usagestats/* /data/system/appusagestates/* /dat...

HTML自定义标签与标签自定义属性

大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当。 自定义HTML标签 在firefox、chrome这种现代浏览器里,自定义标签很简单,就像标准的标签那样写就可以了,而且CSS和JavaScript存取自定义标签和标准标签并无二致。 1 2 3 4 5 6 7 8 9 <foo...

axios 学习文档

什么是 axios? Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。axios Github 特性 从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户端支持...

Java调用Oracle存储Package

Oracle的包Package中可以有很多存储,可通过该包的总调入口在java中直接调用。 //java调用oracle的package代码 public boolean cal() throws java.lang.Exception { CallableStatement cstmt = null; String...

tp5做的excel导入导出(用的PHPexcel类)

//ajax没有流类型,需要另外的处理方式// 应用公共文件 function excelExport($fileName = '', $headArr = [], $data = []) { //引入phpExecl类 vendor("PHPExcel.PHPExcel"); $fileName .= "_" . da...