使用ODBC和用户输入连接字符串在C#应用程序中连接到Oracle 11g

时间:2014-09-15 20:49:46

标签: c# oracle11g odbc

我正在使用C#应用程序,我们希望使用ODBC连接到Oracle数据库。当我尝试打开连接时,它给了我" ERROR [IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称,并且没有指定默认驱动程序"。它尝试使用以下方法连接到Oracle 11g数据库:

    public OdbcConnectionStringBuilder buildOdbcConnectionString(string InitialCatalog)
    {
        OdbcConnectionStringBuilder connStr = new OdbcConnectionStringBuilder();

        connStr.Driver = "{Microsoft ODBC for Oracle};";

        connStr.ConnectionString = "Driver={Microsoft ODBC for Oracle};" + "CONNECTSTRING=(DESCRIPTION="
                + "(ADDRESS=(PROTOCOL=TCP)(HOST=" + tbDbServer.Text + ")(PORT=1521))"
                + "(CONNECT_DATA=(SERVICE_NAME=" + InitialCatalog + ")));"
                + "User Id=" + tbUser.Text + ";Password=" + tbPassword.Text + ";"
                + "Connection Timeout = 300;";

        return connStr;
    }

    public DbConnection(string name, OdbcConnectionStringBuilder odbcStringBuilder )
    {
        try
        {
            Name = name;
            odbcConnection = new OdbcConnection(odbcStringBuilder.ConnectionString);
        }
        catch (Exception e)
        {
            throw e;
        }
    }

    public void Open(OdbcConnection testConn)
    {
        if (testConn.State == ConnectionState.Closed)
        {
            testConn.Open();
        }
    }

    public Boolean testConnection(OdbcConnection testConn)
    {
        try
        {
            Open(testConn);
            Close(testConn);
            return true;
        }
        catch
        {
            return false;
        }
    }

关于我需要调整什么才能让它连接的任何想法?

1 个答案:

答案 0 :(得分:0)

我不认为您可以将所有Oracle内容放在连接字符串中,但无论如何看起来ODBC驱动程序管理器要么被您的连接字符串搞糊涂了,要么您没有Microsoft ODBC用于安装Oracle驱动程序。如果您安装了该驱动程序,那么计算连接字符串的简单方法是:a)使用驱动程序管理器对话创建DSN,b)测试它是否正常工作c)使用DSN = mydsn连接代码d)检查输出连接字符串SQLDriverConnect可以返回(即C API,但我在C#中假定您可以获得相同的信息)。然后,您可以删除DSN并使用返回的字符串SQLDriverConnect进行无DSN连接。