Я строю запрос MySql в vb.net:Команда Текстовые параметры, как ничто
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 cannnot быть @IdDep значение. Я попробовал «» для значения этой переменной; Я пытался ? для значения этой переменной. Когда я запускаю командный текст, полученный от зависания над cmd в MySql, он работает так, как должен. Мой вопрос заключается в том, как параметризовать запросы без значения.
Попробуйте [DbNull] (https://msdn.microsoft.com/en-us/library/system.dbnull (v = vs.110) .aspx) –
Сделал это тоже, и он задохнулся, говоря, что это был тип и не может использоваться как переменная справа от знака равенства –
'DbNull.Value' или' New DbNull() ', тогда ... –