Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan Berparameter Saya Membuang Ralat 'Parameter Hilang'?

Mengapa Pertanyaan Berparameter Saya Membuang Ralat 'Parameter Hilang'?

Patricia Arquette
Lepaskan: 2024-12-31 04:19:08
asal
151 orang telah melayarinya

Why Does My Parameterized Query Throw a

Ralat Pertanyaan Berparameter: Parameter Hilang

Pengenalan:

Pertanyaan berparameter menyediakan keselamatan dan prestasi yang lebih baik dengan membenarkan parameter menjadi ditentukan secara berasingan daripada rentetan pertanyaan. Walau bagaimanapun, jika parameter yang diperlukan tidak dibekalkan, ia boleh mengakibatkan ralat "Pertanyaan berparameter menjangkakan parameter yang tidak dibekalkan."

Senario:

Pertimbangkan coretan kod berikut daripada Visual Basic .NET aplikasi:

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()
Salin selepas log masuk

Isu:

Setelah memasukkan rentetan carian dalam kotak teks, kod tersebut menimbulkan ralat berikut:

The parameterized query '(@Parameter1 nvarchar(4000))SELECT * FROM
borrow where (Departme' expects the parameter '@Parameter1', which was
not supplied.
Salin selepas log masuk

Penyelesaian:

Ralat ini berlaku kerana tiada parameter dinyatakan dalam rentetan pertanyaan. Untuk menyelesaikan masalah ini, tambahkan parameter seperti @Department dan tentukan nilainya berdasarkan input pengguna:

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
Salin selepas log masuk

Kod ini menyemak sama ada kotak teks kosong dan menetapkan nilai parameter kepada DBNull.Value jika ia adalah . Jika tidak, ia menetapkan nilai parameter kepada teks yang dimasukkan dalam kotak teks.

Dengan membekalkan parameter, pertanyaan akan berjaya dilaksanakan dan mengembalikan data yang ditapis.

Atas ialah kandungan terperinci Mengapa Pertanyaan Berparameter Saya Membuang Ralat 'Parameter Hilang'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan