我正在尝试使用.net控制台应用程序连接到Access 2007数据库(.accdb)。我在ODBC管理器中设置了一个系统DSN。 这就是我设置连接的方式:
conn = new OdbcConnection();
conn.ConnectionString = "DSN=HU-FU";
conn.Open();
在我的开发机器上它完美运行,但今天我尝试在客户机上安装它,我收到以下错误:
ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
任何人都知道可能是什么问题?
这是ODBC跟踪源:
UPSShipmentServ 1454-6f0 ENTER SQLDriverConnectW
HDBC 0x00424070
HWND 0x00000000
WCHAR * 0x69938B34 [ -3] "******\ 0"
SWORD -3
WCHAR * 0x69938B34
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>
UPSShipmentServ 1454-6f0 EXIT SQLDriverConnectW with return code -1 (SQL_ERROR)
HDBC 0x00424070
HWND 0x00000000
WCHAR * 0x69938B34 [ -3] "******\ 0"
SWORD -3
WCHAR * 0x69938B34
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>
DIAG [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed (0)
UPSShipmentServ是我的应用程序的名称。但遗憾的是,这对我没有任何意义......
问题的另一个补充。我检查了两台机器上的Access驱动程序(ACEODBC.DLL)版本,并且我的版本比客户端要新得多。可能是问题吗?有没有办法更新他的司机?
感谢。
答案 0 :(得分:2)
好的伙计们,我必须为这个问题道歉......
我知道问题是什么。这是一个愚蠢的错误。在ODBC管理器中,当我设置DSN时,我没有正确选择accdb文件。所以我的程序失败,因为没有为DSN选择db文件。
因此,下次如果您看到此错误,请确保您的DSN设置正确。无论如何,谢谢你的回复。
答案 1 :(得分:0)
也许我没有,但我通常直接引用Access bd文件(这不是正确的方法):
String dbPath = "c:\access.accdb";
OleDbCommand cmd = new OleDbCommand();
OleDbConnection mycon = new OleDbConnection();
mycon.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dbPath + ";Jet OLEDB:Database Password=thePassword;";
cmd = mycon.CreateCommand();
cmd.CommandText = Query;
mycon.Open();
答案 2 :(得分:0)
在您安装它的客户端计算机上进入您的odbc数据源管理员 并添加数据源'HU_FU'