2010-09-30 22 views
0

我在表單上有一個文本框和一個按鈕。使用Vb.net中的IN子句將某些內容保存到使用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 2010-09-30 10:31:30

回答

3

嘗試刪除單引號你包裹IN值:

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

這很好用!非常感謝你。那麼,單引號是幹什麼的?只是想了解它請 – 2010-09-30 11:06:51

1

如果您在測試多個值的字符串變量,那麼這些多個值需要在引號中。

你第一次嘗試「幾乎」工作的原因是因爲你也可以用引號中的每個單獨的值生成你的SqlCommand。 I.E.
UPDATE dbo.Recordings SET Status = 0 where RecID IN ('1234', '5678')

在這種情況下,T-SQL會做每一個字符串值的隱式轉換爲INT, 這正是它試圖當你給它「1234,5678」但ISN做作爲一個INT不可辨認。

相關問題