2012-03-08 1110 views
0

我试图用.net控制台应用程序连接到Access 2007数据库(.accdb)。我在ODBC管理器中设置了一个系统DSN。 这是我如何建立连接:C#ODBC驱动程序的SQLSetConnectAttr失败

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),而且我的版本比客户机要新。这可能是问题吗?有什么方法可以更新他的驱动程序?

谢谢。

+1

您是否在客户机上设置了DSN? – AnarchistGeek 2012-03-08 16:28:44

+0

您需要知道SQLSetConnectAttr属性失败。在ODBC管理员中启用跟踪,然后尝试再次连接,然后查看跟踪以查看哪些属性无法设置。 – bohica 2012-03-09 07:59:11

+0

DSN在客户机上设置,这不是问题。 – bazsano1 2012-03-09 08:22:21

回答

0

也许我了,但我通常是指直接访问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(); 
+0

我可以试试这个,但我不认为这是问题所在。 – bazsano1 2012-03-09 08:29:48

0

进入ODBC数据源管理上安装其客户端计算机上 并添加数据源“HU_FU”

2

好球员,我对这个问题表示歉意......

我知道是什么问题。这是一个愚蠢的错误。在ODBC管理器中,当我设置DSN时,我没有正确选择accdb文件。所以我的程序失败了,因为没有为DSN选择db文件。

因此,下次如果您看到此错误,请确保您的DSN设置正确。无论如何感谢您的答复。