多步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(); } 

我从try块的第一个语句中调试调试器,并在我尝试打开连接时发现错误。 错误文字:

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

连接字符串是:

“Provider = Microsoft.Jet.OLEDB.4.0; DataSource = E:\ NewSoft \ Database \ TestApp.accdb; Integrated Security = SSPI”

我正在使用oledb连接。

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

 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连接字符串中的Integrated Security=SSPI修复了问题。

对于连接到MS Access数据库的类似问题,为Jet OLEDB的连接属性中设置的错误密码生成了这个确切的错误:数据库密码=

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

因此,我更改了Access文件密码并替换了Jet OLEDB:Database Password =并更新了它,它解决了问题。