C#ODBC驱动程序的SQLSetConnectAttr失败

时间:2012-03-08 16:22:39

标签: c# .net ms-access odbc

我正在尝试使用.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)版本,并且我的版本比客户端要新得多。可能是问题吗?有没有办法更新他的司机?

感谢。

3 个答案:

答案 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'