以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]sql参数空项会出问题吗  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=160096)

--  作者:fczhaobo
--  发布时间:2021/1/20 9:26:00
--  [求助]sql参数空项会出问题吗
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "Ins-ert Into WXUsers (openid,nickname,sex,city,country,province,headimgurl,groupid,remark,language,tagid_list,subscribe_time) Values(?,?,?,?,?,?,?,?,?,?,?,?)"
cmd.Parameters.Add("@openid",jo(openid))
cmd.Parameters.Add("@nickname",jo(nickname))
cmd.Parameters.Add("@sex",jo(sex))
cmd.Parameters.Add("@city",jo(city))
cmd.Parameters.Add("@country",jo(country))
cmd.Parameters.Add("@province",jo(province))
cmd.Parameters.Add("@headimgurl",jo(headimgurl))
cmd.Parameters.Add("@groupid",jo(groupid))
cmd.Parameters.Add("@remark",jo(remark))
cmd.Parameters.Add("@language",jo(language))
cmd.Parameters.Add("@tagid_list",jo(tagid_list))
cmd.Parameters.Add("@subscribe_time",jo(subscribe_time))
cmd.ExecuteNonQuery

以上代码,如果有一项出现空项会出现问题吗?
[此贴子已经被作者于2021/1/20 9:26:30编辑过]

--  作者:有点蓝
--  发布时间:2021/1/20 9:34:00
--  
赋值nothing

cmd.Parameters.Add("@nickname",nothing)

--  作者:fczhaobo
--  发布时间:2021/1/20 9:39:00
--  
那就太费事了,还能一个一个的进行判断吗?
--  作者:有点蓝
--  发布时间:2021/1/20 9:47:00
--  
方法1、空值的列不要放到sql里
2、像2楼那要给空值
3、拼sql,不要使用参数化

--  作者:fczhaobo
--  发布时间:2021/1/20 10:16:00
--  
    Dim cmd As new SQLCommand
    cmd.C-
    cmd.C-ommandText = "In-sert Into WXUsers (openid,nickname,sex,city,country,province,headimgurl,groupid,remark,language,tagid_list,subscribe_time) Values(\'" & jo("openid") & "\',\'" & jo("nickname") & "\',\'" & jo("sex") & "\',\'" & jo("city") & "\',\'" & jo("country") & "\',\'" & jo("province") & "\',\'" & jo("headimgurl") & "\',\'" & jo("groupid") & "\',\'" & jo("remark") & "\',\'" & jo("language") & "\',\'" & jo("tagid_list") & "\',\'" & jo("subscribe_time") & "\')"
    cmd.ExecuteNonQuery

我快写崩溃了,还是出错


--  作者:fczhaobo
--  发布时间:2021/1/20 10:17:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:6878769.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/1/20 10:21:00
--  
dim sql as string = "In-sert Into WXUsers ("
dim vas as string = "Values("
if jo("openid") isnot nothing then
sql = sql & "openid,"
vas = vas & "\'" & jo("openid").tostring() & "\',"
end if
if jo("nickname") isnot nothing then
sql = sql & "nickname,"
vas = vas & "\'" & jo("nickname").tostring() & "\',"
end if
……
sql = sql.trim(",")
vas vas .trim(",")
sql =sql & ") " & vas & ")"
msgbox(sql)
 cmd.C-ommandText = sql