Использование предложения IN в Vb.net для сохранения чего-либо в базу данных с использованием SQL - PullRequest
0 голосов
/ 30 сентября 2010

У меня есть текстовое поле и кнопка на форме.

Я хочу выполнить запрос (в Vb.Net), который выдаст запрос со значениями IN.

Ниже приведен пример моего кода

myConnection = New SqlConnection("Data Source=sqldb\;Initial Catalog=Rec;Integrated Security=True")
myConnection.Open()
myCommand = New SqlCommand("UPDATE dbo.Recordings SET Status = 0 where RecID in ('" & txtRecID.Text & "') ", myConnection)
ra = myCommand.ExecuteNonQuery()
myConnection.Close()
MsgBox("Done!", _
MsgBoxStyle.Information, "Done")

Когда я ввожу одно значение, оно работает, но когда я ввожу значения запятыми, оно выдает ошибку:

"Преобразование не удалось при преобразовании значения varchar '1234,4567' в тип данных int. "

Может кто-нибудь помочь мне решить эту проблему или есть альтернативный способ?

Большое спасибо

Ответы [ 2 ]

3 голосов
/ 30 сентября 2010

Попробуйте удалить одинарные кавычки, в которые вы заключаете значения IN:

myCommand = New SqlCommand("UPDATE dbo.Recordings SET Status = 0 WHERE RecID IN (" & txtRecID.Text & ") ", myConnection) 
1 голос
/ 28 марта 2011

Если вы тестировали переменную STRING для нескольких значений, то эти несколько значений должны быть в кавычках.

Причина, по которой ваша первая попытка «почти» сработала, заключалась в том, что вы могли также сгенерировать SqlCommand с каждым отдельным значением в кавычках. И.Е.
UPDATE dbo.Recordings SET Status = 0 where RecID IN ('1234', '5678')

В этом случае T-SQL сделал бы неявное преобразование каждого из строковых значений в INT, это то, что он пытался сделать, когда вы дали ему «1234, 5678», но это не расшифровывается как INT.

...