我正在运行以下代码
/*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 状态值(如果有)。没有完成任何工作。
连接字符串是:
“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:\NewSoft\Database\TestApp.accdb;集成 安全=SSPI”
我正在使用 oledb 连接。
使用以下连接字符串打开连接时,我遇到了类似的问题:
Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=True
将连接字符串中的
Integrated Security=True
更改为 Integrated Security=SSPI
解决了问题。
这可能是连接字符串错误造成的。您应该尝试添加
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 了解更多信息
对于连接到 MS Access 数据库的类似问题,由于 Jet OLEDB:Database Password=
的连接属性中设置的密码错误而生成了此确切错误我遇到了同样的问题,但发现密码中使用了特殊字符。
因此,我更改了 Access 文件密码,并将 Jet OLEDB:Database Password= 替换为更新后的密码,解决了问题。