Dim NorthWindOledbConnection As String = "Provider=SQLOLEDB;DataSOurce=SARAN-PC\SQLEXPRESS;Integrated Security=ssp1;InitialCatalog=Sara"
Dim rs As New ADODB.Recordset()
rs.Open("select * from SecUserPassword", NorthWindOledbConnection, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockBatchOptimistic)
我试图在visual studio 2008中运行以上代码 - 它显示以下错误:
“多步OLE DB操作生成错误。检查每个OLE DB状态值,如果可用。没有工作”
答案 0 :(得分:3)
首先,不要在VB.NET中使用ADO。使用ADO.NET。
除此之外,创建一个合适的Connection
对象,而不是绕过一个字符串
并修复您的连接字符串。它是SSPI
,而不是SSP1
。它是Data Source
,而不是DataSOurce
。它是Initial Catalog
,而不是InitialCatalog
。
答案 1 :(得分:1)
您正在使用一种非常非常古老的方式来访问已与Visual Basic 6及更早版本一起使用的数据库。
选中使用 ADO.NET 而不是旧 ADO 。例如,您可以使用与您正在使用的代码“相似”的代码(但不是访问VS2008上数据的最佳方式)
OleDbConnection con= New OleDbConnection( **Your Connection String** )
con.Open()
Dim command As OleDbCommand = New OleDbCommand("select * from SecUserPassword", con)
sqlCommand .CommandType = CommandType.Text
Dim reader As OleDbDataReader = TheCommand.ExecuteReader()
While reader.Read()
System.Console.Write(reader(** Your Table Field Name** ).ToString())
End While
con.Close()
要查看如何创建正确的连接,请参阅网站http://www.connectionstrings.com/
如果您还想访问SQL Server数据库,可以使用SQLClient命名空间而不是OleDb。例如 System.Data.SqlClient.SqlConnection 而不是 OleDbConnection ,以便为SQL Server提供更好的性能
答案 2 :(得分:0)
以下链接是一篇文章,详细介绍了可能出现此错误消息的6种情况:
方案1 - 尝试将数据插入数据库时发生错误
方案2 - 尝试打开ADO连接时出错
场景3 - 在Access中插入数据时出错,其中fieldname有空格
场景4 - 使用adLockBatchOptimistic时将数据插入Access时出错
方案5 - 使用Jet.OLEDB.3.51或ODBC驱动程序(不是Jet.OLEDB.4.0)时,将数据插入Access时出错
场景6 - 使用Command对象和参数
时发生错误http://www.adopenstatic.com/faq/80040e21.asp
希望它可以帮助其他可能面临同样问题的人。