gpt4 book ai didi

mysql - 命令文本参数为空

转载 作者:行者123 更新时间:2023-11-29 21:38:31 25 4
gpt4 key购买 nike

我正在 vb.net 中构建 MySql 查询:

 cmd.CommandText = "Select id INTO @idDep from dBase.tableA where guid in (@strdepToDelete, @strOtherToDelete) and IsDependent = '1'; " & _
"Select id INTO @idOther from dBase.tableA where guid in (@strdepToDelete, @strOtherToDelete) and IsDependent = '0'; " & _
"delete from dBase.tableA where id in(@idDep, @idOther);"
cmd.Parameters.Add("@strdepToDelete", MySql.Data.MySqlClient.MySqlDbType.String)
cmd.Parameters("@strdepToDelete").Value = strdepToDelete
cmd.Parameters.Add("@strOtherToDelete", MySql.Data.MySqlClient.MySqlDbType.String)
cmd.Parameters("@strdepToDelete").Value = strOtherToDelete
cmd.Parameters.Add("@IdDep", MySql.Data.MySqlClient.MySqlDbType.Int24)
cmd.Parameters("@IdDep").Value = Nothing
cmd.Parameters.Add("@IdOther", MySql.Data.MySqlClient.MySqlDbType.Int24)
cmd.Parameters("@IdOther").Value = Nothing


Try
cmd.ExecuteNonQuery()
success = True
Catch ex As Exception
End Try
Return success

捕获错误,表明 Null 不能是 @IdDep 值。我已经尝试过“”作为该变量的值;我努力了 ?为该变量的值。当我运行通过将鼠标悬停在 MySql 中的 cmd 上获得的命令文本时,它按预期工作。我的问题是如何参数化没有任何值(value)的查询。

最佳答案

我不认为你的问题是数据类型,命令对象非常擅长从 Nothing 推断 DBNull。我认为你的 SQL 语句有问题......

如果您有 IN 语句,FldNm IN(1,2,NULL)那么SQL引擎会将其解析为FldNm=1 OR FldNm=2 OR FldNm=NULL 。最后一项无效(对于一般 SQL,特别是 MySQL...只是尝试进行验证)。

您可以查询 FldNm IS NULL 的记录,但不能查询 FldNm=NULL 的记录。

因此,当您构造该 SQL 语句时,您需要跳过 IN 子句中的值(如果它们为空)。或者 - 如果该值为 null,则使用一些不存在的值作为“解决方法”。

希望对您有帮助!

关于mysql - 命令文本参数为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34724048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com