多步OLE DB操作产生错误.检查每个OLE DB状态值(如果可用).没有做功

本文关键字:OLE DB 如果 状态 操作 错误 检查 多步 | 更新日期: 2023-09-27 18:01:42

我正在运行以下代码

/*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块的第一个语句中放置调试器,并发现当我试图打开连接时出现错误。错误文本:

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

连接字符串是:

"提供者= Microsoft.Jet.OLEDB.4.0;数据源= E: ' NewSoft '数据库' TestApp.accdb;整合安全= SSPI "

多步OLE DB操作产生错误.检查每个OLE DB状态值(如果可用).没有做功

我在使用以下连接字符串打开连接时遇到了类似的问题:

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

将连接字符串中的Integrated Security=True更改为Integrated Security=SSPI可修复此问题。

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

Persist Security Info=True;

或者您可能在OLEDB提供者的注册表中出现问题,该提供者必须具有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

对于连接到MS Access数据库的类似问题,该错误是由于在Jet OLEDB的连接属性中设置了错误的密码而产生的:database password =

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

因此,我更改了Access文件密码,并将Jet OLEDB:Database password =替换为更新后的密码,并解决了问题。