多步OLE DB操作生成错误

时间:2010-08-11 07:39:17

标签: sql vb.net visual-studio-2008 ado

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状态值,如果可用。没有工作”

3 个答案:

答案 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

希望它可以帮助其他可能面临同样问题的人。

相关问题