我的机器上有一个DB2 express,我可以使用命令窗口从数据库中查询(在执行以下两个命令之后):
set DB2INSTANCE=db2inst1
db2 connect to tims user
现在,当我尝试从C#控制台应用程序连接到数据库时,我收到了不同连接字符串的错误。
尝试1
string connectionString = @"Provider = IBMDADB2; Database = TIMS; Hostname = localhost; CurrentSchema=db2inst1; ";
SQL1032N未发出启动数据库管理器命令。 SQLSTATE = 57019
尝试2
string connectionString = @"Provider = IBMDADB2; Database = TIMS; CurrentSchema=db2inst1; ";
SQL1031N在指定的文件系统上找不到数据库目录。 SQLSTATE = 58031
此方案的正确连接字符串应该是什么?
CODE
string connectionString = @"Provider = IBMDADB2; Database = TIMS; Hostname = localhost; CurrentSchema=db2inst1; ";
OleDbConnection myConnection = new OleDbConnection();
myConnection.ConnectionString = connectionString;
myConnection.Open();
答案 0 :(得分:2)
您的计算机上是否运行了多个DB2实例?您可以通过执行db2ilist
命令获取存在的实例列表。
如果有在打开DB2命令窗口时执行set DB2INSTANCE=db2inst1
语句,以便使用TIMS
命令连接到db2 connect to TIMS
数据库,那么你需要确保以相同的方式配置C#应用程序的环境。
您可以通过多种方式执行此操作:
通过在启动应用程序之前设置DB2INSTANCE环境变量
使用命令db2set -g DB2INSTDEF=db2inst1
更改计算机上的默认DB2实例(**请参阅下面的注释)
使用TCPIP连接字符串(如@Bhaarat所述),以便您的应用程序不依赖于默认实例的数据库目录
注意:在更改DB2INSTDEF
之前,您可能希望通过执行命令db2set -all
并在输出中查找DB2INSTDEF
来查看当前值是什么。另请注意,更改默认实例可能会影响计算机上运行的其他应用程序。
答案 1 :(得分:0)
参考此网址http://www.c-sharpcorner.com/uploadfile/nipuntomar/connection-strings-for-ibm-db2/
你的连接字符串应该是这样的
Provider=IBMDADB2;Database=urDataBase;Hostname=urServerAddress;Protocol=TCPIP;Port=50000;
Uid=urUsername;Pwd=urPassword;
您可以参考更多内容 http://www.codeproject.com/Articles/4870/Connect-to-DB2-from-Microsoft-NET
答案 2 :(得分:0)
我的DB2 insatnce名称是“db2inst1”,当我使用DB2命令窗口时它工作正常。
现在我进行了以下设置,现在工作正常。 : - )
<强>的ConnectionString 强>
“Provider = IBMDADB2; Database = TIMS; Hostname = localhost; Protocol = TCPIP; Port = 50010; Uid = myUserID; Pwd = myPassword”;
<强> CODE 强>
string queryString = "SELECT * FROM DBATABC";
try
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbCommand command = new OleDbCommand(queryString, connection);
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
string companyCode = reader.GetString(0).ToString();
}
}
}
reader.Close();
}
}
注意:尝试为ODBC创建DSN并在示例SSIS包中使用ODBC连接。这将有助于解决OLEDB连接问题(这两者都很常见)