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