ASP错误“;键列信息不足或不正确。”;更新mySQL时

ASP错误“;键列信息不足或不正确。”;更新mySQL时,mysql,asp-classic,vbscript,ado,Mysql,Asp Classic,Vbscript,Ado,我在一个调用ADO UPDATE方法的经典ASP类中有以下子例程。我使用的是使用ODBC驱动程序5.1的mySQL数据库 如果我调用了所有子例程,我会得到以下错误: Microsoft光标引擎错误“80004005” 键列信息不足或不正确。太多行受更新影响 我试图更改cursorlocation属性和open参数,但仍然无法使其正常工作。我正在更新的表有一个唯一的自动id,它是主键。嗯。您需要通过ADO来完成吗?尝试对连接对象运行查询,看看会发生什么?诊断动态创建的SQL时要做的第一件事是检查实

我在一个调用ADO UPDATE方法的经典ASP类中有以下子例程。我使用的是使用ODBC驱动程序5.1的mySQL数据库

如果我调用了所有子例程,我会得到以下错误:

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


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

嗯。您需要通过ADO来完成吗?尝试对连接对象运行查询,看看会发生什么?

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


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

如果我使用Command对象,效果会很好。我暂时还是坚持这一点。
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