Vb6 通过adodb准备语句插入空字符串
在For-Each循环中,我的VB程序迭代一个集合 在这个循环中,我正在为准备好的语句设置参数Vb6 通过adodb准备语句插入空字符串,vb6,adodb,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.CreatePar
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
当CNameVal
(param4
)为空时,VB给我一个错误:paramater对象未正确定义
在创建参数之前,我尝试通过检查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
这两条线都不能解决问题。谢谢你的帮助 Len(空)=0
,这会导致错误。字符串长度不能为0
这里正确的做法是提供数据库中设置的实际固定长度,而不是当前字符串的长度。我还怀疑您是否需要
adChar
,您可能是指adVarChar
因为
CNameVal=Empty
永远不会是真的,所以如果不起作用。检查空的正确方法是IsEmpty(CNameVal)
Len(Empty)=0
,这确实是个问题!现在,当长度=0时,我手动将长度设置为1。你对CNameVal=Empty
的说法不正确:在我的情况下IsEmpty(CNameVal)
永远不会是True
,CNameVal=Empty
或CNameVal=”“
是。。。这很奇怪吗?:)@ZacL我错了,你可以用空的
(你不能用空的
)来比较。但是Empty
是Variant
数据类型中的一个特殊值,您可以使用它来判断字符串的长度是否为零。这是因为VB为您处理转换,因此Empty=”“
产生True
,尽管它们是不同的东西。为了让代码更清楚地了解其目标,建议您检查Len(a_string)=0
,而不是a_string=Empty
。