使用ODBC和用户输入连接字符串连接到C#应用程序中的Oracle11g

本文关键字:连接 应用程序 Oracle11g 字符串 ODBC 用户 输入 使用 | 更新日期: 2023-09-27 18:21:55

我正在开发一个C#应用程序,我们希望使用ODBC将其连接到Oracle数据库。当我试图打开连接时,它会给我"错误[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;
        }
    }

关于我需要调整什么以允许它连接,有什么想法吗?

使用ODBC和用户输入连接字符串连接到C#应用程序中的Oracle11g

我不认为你可以把所有Oracle的东西都放在连接字符串中,但无论如何,ODBC驱动程序管理器似乎被你的连接字符串弄糊涂了,或者你没有安装Microsoft ODBC for Oracle驱动程序。如果你安装了该驱动程序,那么计算连接字符串的一个简单方法是a)使用驱动程序管理器对话框创建DSN,b)测试它的工作原理c)使用DSN=mydsn在代码中连接d)检查SQLDriverConnect可以返回的输出连接字符串(即c API,但我认为在c#中你可以获得相同的信息)。然后,您可以删除DSN,并使用为无DSN连接返回的字符串SQLDriverConnect。