2010-09-30 2 views
0

У меня есть текстовое поле и кнопка в форме.Использование предложения IN в Vb.net для сохранения чего-либо в базе данных с помощью SQL

Я хочу запустить запрос (в 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") 

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

"Conversion failed when converting the varchar value '1234,4567' to data type int."

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

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

+0

Попробуйте 'MsgBox (myCommand.CommandText)' вместо этого. Вы увидите его. – GSerg

ответ

3

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

myCommand = New SqlCommand("UPDATE dbo.Recordings SET Status = 0 WHERE RecID IN (" & txtRecID.Text & ") ", myConnection) 
+0

Это отлично работает! Большое спасибо. Итак, что делают одиночные кавычки? просто хочу понять это PLS –

1

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

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

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