VB6 ADODB因SQL Compact失败:多步操作产生错误

时间:2010-02-16 12:11:04

标签: sql-server database vb6 dao adodb

我正在将旧应用程序转换为使用SQL Compact数据库(它适用于SQ Server 2005和2008)并且在尝试执行简单的select命令时使用以下代码会出错:

Private Const mSqlProvider          As String = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;"
Private Const mSqlHost              As String = "Data Source=C:\database.sdf;"
Private mCmd                        As ADODB.Command   ' For executing SQL'
Private mDbConnection               As ADODB.Connection


Private Sub Command1_Click()

    Dim DbConnectionString As String

    DbConnectionString = mSqlProvider & _
                            mSqlHost


    Set mDbConnection = New ADODB.Connection
    mDbConnection.CursorLocation = adUseClient

    Call mDbConnection.Open(DbConnectionString)

    If mDbConnection.State = adStateOpen Then
        Debug.Print (" Database is open")
        ' Initialise the command object'
        Set mCmd = New ADODB.Command
        mCmd.ActiveConnection = mDbConnection

    End If


    mCmd.CommandText = "select * from myTable"
    mCmd.CommandType = adCmdText
    mCmd.Execute  ' FAILS HERE! '


End Sub

我在项目中引用了Microsoft ActiveX Data Access Object 6.0库。

我得到的错误是:

  

运行时错误-2147217887(80040e21)

     

Multipe-Step操作产生错误。检查每个状态值

只是想知道是否有人有任何建议?

由于

3 个答案:

答案 0 :(得分:0)

现在有这个工作:

更改

mDbConnection.CursorLocation = adUseClient 

mDbConnection.CursorLocation = adUseServer worked!  

答案 1 :(得分:0)

我不是100%确定错误是来自此代码,而不是之后的东西,这是“最后知道好”类型的位置。导致错误的最常见原因是:

  1. 您隐式将数据转换为错误的数据类型(例如,正在将数字字符串值插入数字字段中。)

  2. 您正在插入格式错误的值(最常发生在日期上)

  3. 正在将空值插入到不允许空值的字段中。

  4. 您已使用值超出字段的最大长度。 (例如,在10个字符的字段中插入长度为50个字符的字符串)

  5. 此外,如果连接未打开,则没有任何错误。

答案 2 :(得分:0)

这个问题与这两个问题非常相似:

这将是以下三件事之一:

  • 连接字符串(您使用的是哪个驱动程序?)
  • 安全性(使用集成安全性而非用户名/密码)
  • 或正如Belliez所说,光标位置