簡介:
參數化查詢透過允許參數與查詢字串分開指定。但是,如果未提供必需的參數,則可能會導致錯誤「參數化查詢需要未提供的參數。」
場景:
考慮以下程式碼片段來自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中文網其他相關文章!