【问题标题】:using odbc to connect to Oracle database in c#c#中使用odbc连接Oracle数据库
【发布时间】:2017-08-17 13:11:30
【问题描述】:

我正在尝试用 c# 编写一个工具,该工具将连接到 Oracle 数据库,并且我需要使用 ODBC。

如果我使用以下代码:

using System.Data.Odbc;
string str1 = "DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=abcd.efgh.net)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)));USER ID=user_id;PASSWORD=qassword";
OdbcConnection coon = new OdbcConnection();
coon.ConnectionString = str1;
coon.Open();

我收到错误消息:

An unhandled exception of type 'System.Data.Odbc.OdbcException' occurred in System.Data.dll
Additional information: ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

即使我将连接字符串更改为:

string str2 = "Driver={Oracle in OraClient12home1};DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=abcd.efgh.net)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)));USER ID=user_id;PASSWORD=qassword";

我收到相同的错误消息。 所以我想问题不在于“Driver = {...}”部分?但是我在“数据源”部分做错了什么?

谢谢。

【问题讨论】:

  • 您是否在运行应用程序的机器上配置了 ODBC 连接?
  • 我用ODBC数据源管理器测试了连接,连接成功。这是你的意思吗?
  • 您的应用程序的架构是什么,32 位 (x86) 还是 64 位 (x64)?它与您的Oracle客户端相同吗? ODBC 驱动程序?
  • 看来我们的应用程序(Visual Studio)是 32 位的.....好吧,至少我有一些线索可以尝试。谢谢。

标签: c# oracle odbc


【解决方案1】:

试试

Driver={Oracle in OraClient12home1};DBQ={(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=abcd.efgh.net)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)))};UID=user_id;PWD=qassword";

而不是

Driver={Oracle in OraClient12home1};DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=abcd.efgh.net)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service_name)));USER ID=user_id;PASSWORD=qassword";

Using the Oracle ODBC Driver: Format of the Connection String和/或Oracle in OraClient11g_home1 connection strings

【讨论】:

  • 您是否验证了架构(32 位与 64 位)?
  • 我相信我为所有 oracle 客户端/数据库安装了 64 位...但是如何仔细检查架构?
【解决方案2】:

试试这个

        using System.Data.Odbc;

        String connectionString = "Dsn=HP5ODBC;uid=system;pwd=manager";          
        OdbcConnection coon = new OdbcConnection();
        coon.ConnectionString = connectionString;
        coon.Open();
        MessageBox.Show(coon.State.ToString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2013-11-18
    • 2019-08-04
    • 2016-10-03
    相关资源
    最近更新 更多