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

时间:2013-02-28 07:20:16

标签: c# .net oledb

我正在运行以下代码

/*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:\力新\数据库\ TestApp.accdb;集成   安全= SSPI“

我正在使用oledb连接。

4 个答案:

答案 0 :(得分:3)

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

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

在连接字符串中将Integrated Security=True更改为Integrated Security=SSPI解决了问题。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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