【问题标题】:ASP error "Key column information is insufficient or incorrect." when updating mySQLASP 错误“键列信息不足或不正确。”更新 mySQL 时
【发布时间】:2009-07-27 14:22:12
【问题描述】:

我在调用 ADO UPDATE 方法的经典 ASP 类中有以下子例程。我正在使用 ODBC 驱动程序 5.1 使用 mySQL db。

如果我所有的子程序我得到以下错误:

Microsoft 光标引擎错误“80004005” 关键列信息不充分或不正确。更新影响了太多行。

Public Sub Update(table,id_field,id,fields,values)
    Dim yy
    Dim strQuery
    Dim strFields
    Const adOpenDynamic = 2
    Const adLockOptimistic = 3
    Const adCmdText = 1
    strQuery = ""
    For yy = LBound(fields) to UBound(fields)
            strQuery = strQuery & fields(yy) & ", "
    Next
    strQuery = Left(strQuery, Len(strQuery) - 2)
    strQuery = "select " & strQuery & " from " & table & " where " & id_field & "=" & id
    i_objRS.CursorLocation = 3
    i_objRS.Open strQuery, i_objDataConn, adOpenDynamic, adLockOptimistic, adCmdText
    For yy = 0 To UBound(fields)
            i_objRS(fields(yy)) = values(yy)
    Next
    i_objRS.Update
    i_objRS.Close
End Sub

我已尝试更改 cursorlocation 属性和 open 参数,但仍无法使其正常工作。我正在更新的表有一个唯一的自动 ID,它是主键。

【问题讨论】:

    标签: mysql asp-classic vbscript ado


    【解决方案1】:

    诊断动态创建的 SQL 时要做的第一件事是检查实际创建的 SQL 字符串。但是,使用动态游标执行更新并不是实现行更新的好方法。

    改为使用 ADODB.Command 对象并创建更新命令。注意不要将这些值连接到创建的 SQL 命令中。而是使用参数位置标记(通常是?但我不记得这是否会改变我的 DBengine(我不是 mySQL bod))并将参数添加到 ADODB.Command 参数集合。

    【讨论】:

    • 如果我使用命令对象它工作正常。我会暂时坚持下去。
    【解决方案2】:

    嗯。您需要通过 ADO 执行此操作吗?尝试对连接对象运行查询,看看会发生什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 2019-08-03
      • 2018-07-04
      • 2016-04-23
      • 1970-01-01
      • 2015-01-28
      相关资源
      最近更新 更多