IN
절을 사용하여 업데이트하려고하지만 작동하지 않을 수 있습니다. 내 iArr
은 쉼표로 구분 된 숫자 목록을 만들고 이론상 괄호로 묶인 후에는 업데이트해야하지만 제대로 작동하지는 않습니다. 계속 오류가 발생합니다.IN 절에 대한 매개 변수를 사용하는 SQL Server 쿼리
nvarchar 값 '111111, 222222, 333333'을 데이터 유형 int로 변환 할 때 변환하지 못했습니다.
아무리 생각해도 될까요? 아래의 전체 코드 :
Dim iArr As String
iArr = ""
For i As Integer = 0 To ufReview.InvoiceGrid.Rows.Count - 1
iArr = iArr & ufReview.InvoiceGrid.Rows(i).Cells(0).Value & ", "
Next i
iArr = Left(iArr, Len(iArr) - 2)
Dim SQL_Arr As String = _
<SQL>
UPDATE SCInv SET Inv_Transfer_Date = @UpdateCommand WHERE Inv_Num IN (@Array)
</SQL>
Dim cnt As New SqlConnection()
Dim cmd As New SqlCommand()
cnt.ConnectionString = "Data Source=SERVERNAME;Initial Catalog=CAT;User ID=USERID;Password=PASSWORD"
Try
cnt.Open()
cmd.Connection = cnt
cmd.CommandText = SQL_Arr
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@UpdateCommand", UpdateCommand)
cmd.Parameters.AddWithValue("@Array", iArr)
Dim RACount As Integer = cmd.ExecuteNonQuery()
MsgBox("The following Summary Numbers are now marked as " & UpdateFeedback & ": " & vbCrLf & iArr _
& vbCrLf & vbCrLf & "(" & RACount & " row(s) affected)", vbOKOnly + vbInformation, "Tesseract")
Catch ex As Exception
MsgBox("Failed to update, please try again" & vbCrLf & vbCrLf & ex.Message, vbOKOnly + vbCritical, "SQL Error")
End Try
cnt.Close()
cnt.Dispose()
이것은 답변이 아니지만 아마도 WHERE 절을 매개 변수화해야합니다. 나는 SQL 인젝터가 현재 가지고있는 것과 함께 입안에 거품을 일으킬 것이라고 생각한다. –
먼저 공급자가 매개 변수에 대한 배열을 허용하는지 확인합니다. 나는 항상 형식화하고 확장해야했습니다. – Plutonix
배열을'('item1, item2')'에서'('item1', 'item2')' –