소개:
매개변수화된 쿼리는 매개변수를 허용하여 향상된 보안 및 성능을 제공합니다. 쿼리 문자열과 별도로 지정됩니다. 그러나 필수 매개변수가 제공되지 않으면 "매개변수화된 쿼리에 제공되지 않은 매개변수가 필요합니다."라는 오류가 발생할 수 있습니다.
시나리오:
고려하세요. Visual Basic .NET의 다음 코드 조각 애플리케이션:
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged list.Items.Clear() cmd.CommandText = "SELECT * FROM borrow where (Department LIKE '%" & TextBox2.Text & "%')" cmd.Connection = con cmd.CommandType = CommandType.Text con.Open() rd = cmd.ExecuteReader() If rd.HasRows = True Then While rd.Read() Dim listview As New ListViewItem listview.Text = rd("ID").ToString listview.SubItems.Add(rd("Department").ToString) listview.SubItems.Add(rd("Purpose").ToString) listview.SubItems.Add(rd("Items_Details").ToString) listview.SubItems.Add(rd("Requested_by").ToString) listview.SubItems.Add(rd("Approved_by").ToString) listview.SubItems.Add(rd("Date").ToString) listview.SubItems.Add(rd("Status").ToString) listview.SubItems.Add(rd("Date_Returned").ToString) list.Items.Add(listview) End While End If con.Close()
문제:
텍스트 상자에 검색 문자열을 입력하면 코드에서 다음 오류가 발생합니다.
The parameterized query '(@Parameter1 nvarchar(4000))SELECT * FROM borrow where (Departme' expects the parameter '@Parameter1', which was not supplied.
해결 방법:
이 오류는 매개변수는 쿼리 문자열에 지정됩니다. 이 문제를 해결하려면 @Department와 같은 매개 변수를 추가하고 사용자 입력에 따라 해당 값을 지정합니다.
cmd.Parameters.Add("@Department", SqlDbType.VarChar) If (TextBox2.Text = Nothing) Then cmd.Parameters("@Department").Value = DBNull.Value Else cmd.Parameters("@Department").Value = TextBox2.Text End If
이 코드는 텍스트 상자가 비어 있는지 확인하고 비어 있으면 매개 변수 값을 DBNull.Value로 설정합니다. . 그렇지 않으면 매개변수 값을 텍스트 상자에 입력된 텍스트로 설정합니다.
매개변수를 제공하면 쿼리가 성공적으로 실행되고 필터링된 데이터가 반환됩니다.
위 내용은 매개변수화된 쿼리에서 '매개변수 누락' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!