多步骤OLE DB操作产生错误。检查每个OLE DB状态值(如果可用)。没有工作已完成

问题描述:

我运行下面的代码从try块的第一个语句多步骤OLE DB操作产生错误。检查每个OLE DB状态值(如果可用)。没有工作已完成

/*Fetchinch Last CustID from custMaster*/ 
int ID=0; 
try 
{ 
    con.Open(); 
    da = new OleDbDataAdapter("select max(Id) from custMaster",con); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    for(int i=0;i<ds.Tables[0].Rows.Count;i++) 
    ID=int.Parse(ds.Tables[0].Rows[i][0].ToString()); 
    con.Close(); 
} 
catch (Exception ex) {} 
finally 
{ 
    con.Close(); 
} 

我把调试器,并找到当我试图打开连接的错误正在添加的。 错误文本:

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. 

连接字符串是:

“供应商= Microsoft.Jet.OLEDB.4.0;数据源= E:\的NewSoft \数据库\ TestApp.accdb;集成 安全性= SSPI “

我正在使用oledb连接。

+1

不是那个语句返回一个标量而不是数据表? – hcb 2013-02-28 07:46:15

+0

con.open()后发生错误 – Freelancer 2013-02-28 07:55:46

这可能是连接字符串中的错误的结果。你应该尝试添加

Persist Security Info=True; 

或者你可能在你的OLE DB提供程序,它必须具有OLEDB_SERVICES记录你的注册表问题。在根据HKEY_CLASSES_ROOT \ CLSID注册表,找到OLE DB提供程序的CLSID,并添加以下注册表值:

Value Name: OLEDB_SERVICES 
Data Type: REG_DWORD 
Value: 0xFFFFFFFF 

http://support.microsoft.com/kb/269495以获取更多信息

我打开与该连接时也有类似的问题下面的连接字符串:

Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=True 

固定的问题在连接字符串中更改Integrated Security=TrueIntegrated Security=SSPI

用于连接到MS Access数据库类似的问题,对于一个错误的密码喷气OLEDB的连接属性设置生成此确切的错误:数据库密码=

我有同样的问题,但发现是密码中使用的特殊字符。

于是,我改变了访问文件的密码,并更换的Jet OLEDB:数据库密码=与更新之一,它解决了这个问题。