매개 변수화된 쿼리는 제공되지 않은 매개 변수를 예상합니다.
코드에 문제가 있습니다.
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()
항목을 검색하기 위해 텍스트 상자에 문자열을 입력하면 다음 오류가 발생합니다.
매개 변수화된 쿼리 '(@Parameter1 nvarchar(4000))SELECT * FROM browth where (Departme'는 제공되지 않은 매개 변수 '@Parameter1'을 예상합니다.
누가 나를 도와줄 수 있나요?
null 값을 매개 변수에 전달하면 매개 변수를 추가한 후에도 이 오류가 발생하므로 값을 확인하고 null인 경우 DBNull을 사용합니다.가치
이것은 효과가 있을 것입니다.
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
이렇게 하면 개체 계층의 null 값이 데이터베이스에서 허용할 수 있는 DBNull 값으로 변환됩니다.
당신의 웹사이트가 해킹당할 심각한 위험에 처해 있습니다.
.NET에서 SQL Injection 및 SQL Injection을 방지하는 방법을 읽어보십시오.
당신의 질문 문제는 지금 당신의 관심사 중 가장 작은 것입니다.
하지만...
@Misnomer의 솔루션은 가깝지만 완전히 그렇지는 않습니다.
쿼리를 다음으로 변경합니다.
cmd.CommandText = "SELECT * FROM borrow where (Department LIKE '%@DepartmentText%')"
매개 변수를 다음과 같이 추가합니다(또는 @Misnomer가 수행하는 방식).
cmd.Parameters.AddWithValue("@DepartmentText",TextBox2.Text)
중요한 차이점은 명령 텍스트를 변경해야 한다는 것입니다.
Ravidev의 답변 기반 구축 및 단순화:
VB.NET 단축형은 다음과 같습니다.
cmd.Parameters.AddWithValue("@Department", IF(TextBox2.Text, DBNull.Value))
C# 단축형은 다음과 같습니다.
cmd.Parameters.AddWithValue("@Department", (object)TextBox2.Text ?? DBNull.Value)
다음과 같은 매개 변수를 추가해 보십시오.
cmd.Parameters.Add("@Department", SqlDbType.VarChar)
cmd.Parameters("@Department").Value = TextBox2.Text
그리고 명령 텍스트를 @Abe Miessler가 옳다는 것으로 변경합니다. 저는 당신이 그것을 알아낼 것이라고 생각했습니다.
DataGridView 컨트롤에서 데이터베이스에 쓰는 경우 빈 행이 없는지 확인합니다.'사용자에게 행 추가 허용'을 false로 설정하면 불필요한 마지막 빈 행이 잘립니다.
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
//SelectCustomerById(int x);
comboBoxEx1.Items.Clear();
SqlCommand comm = new SqlCommand("spSelectCustomerByID", conn);
//comm.Parameters.Add(new SqlParameter("cust_name", cust_name));
//comm.CommandText = "spSelectCustomerByID";
comm.Parameters.Add(new SqlParameter("cust_id", SqlDbType.Int));
comm.CommandType = CommandType.StoredProcedure;
comm.ExecuteNonQuery();
SqlDataAdapter sdap = new SqlDataAdapter(comm);
DataSet dset = new DataSet();
sdap.Fill(dset, "cust_registrations");
if (dset.Tables["cust_registrations"].Rows.Count > 0)
{
comboBoxEx1.Items.Add("cust_registrations").ToString();
}
comboBoxEx1.DataSource = dset;
comboBoxEx1.DisplayMember = "cust_name";
언급URL : https://stackoverflow.com/questions/3865982/the-parameterized-query-expects-the-parameter-which-was-not-supplied
'programing' 카테고리의 다른 글
NSManagedObject의 특정 하위 클래스를 찾을 수 없습니다. (0) | 2023.05.26 |
---|---|
CSV 파일에 새 열을 추가하는 방법은 무엇입니까? (0) | 2023.05.26 |
텐서플로 CPU 전용 설치에 동적 라이브러리 'cudart64_101.dll'을(를) 로드할 수 없습니다. (0) | 2023.05.26 |
PCH 오류를 수정하는 방법은 무엇입니까? (0) | 2023.05.26 |
.NET의 반투명 창을 포함한 스크린샷 캡처 (0) | 2023.05.26 |