通过adodb准备好的语句插入空字符串

时间:2011-12-07 09:27:01

标签: vb6 adodb

在For Each循环中,我的VB程序遍历集合。

在这个循环中,我正在为预备语句设置参数。

Set param1 = cmd.CreateParameter("sync_id", adChar, adParamInput, Len(sync_id), sync_id)
Set param2 = cmd.CreateParameter("fieldname", adChar, adParamInput, Len(CName), CName)
Set param3 = cmd.CreateParameter("pvname", adChar, adParamInput, Len(pvname), pvname)
Set param4 = cmd.CreateParameter("value", adChar, adParamInput, Len(CNameVal), CNameVal)

然后将命令对象附加到它们。

cmd.Parameters.Append param1
cmd.Parameters.Append param2
cmd.Parameters.Append param3
cmd.Parameters.Append param4

CNameValparam4)为空时,VB给出了一个错误:参数对象未正确定义。

我尝试在创建参数之前检查CNameVal来解决此问题:

If CNameVal = Empty Then
    Set param4 = cmd.CreateParameter("value", adEmpty, adParamInput)
    'Set param4 = cmd.CreateParameter("value")
    'Set param4 = cmd.CreateParameter("value", adEmpty, adParamInput, Len(CNameVal), CNameVal)
Else
    Set param4 = cmd.CreateParameter("value", adChar, adParamInput, Len(CNameVal), CNameVal)
End If

这些线都没有解决问题。任何帮助表示赞赏!!

1 个答案:

答案 0 :(得分:2)

Len(Empty) = 0,导致错误。字符串长度不能为0 这里的正确做法是提供数据库中设置的实际固定长度,而不是当前字符串的长度。我还怀疑你需要adChar,你可能意味着adVarChar

您的If无效,因为CNameVal = Empty永远不会是True。检查Empty的正确方法是IsEmpty(CNameVal)