2013-08-24 4 views
0

전체 데이터베이스를 검색하고 해당 데이터베이스가 포함 된 데이터베이스 목록에있는 레코드 목록을 반환해야하는 검색 기능을 구현해야하는 vb.net에서 데이터베이스 응용 프로그램을 만들고 있습니다. DataGridView 컨트롤의 검색 문자열데이터베이스 응용 프로그램에서 검색 기능 구현

"colNames"라는 이름의 콤보 박스 하나와 "colValues"라는 이름으로 검색 문자열을 입력하는 텍스트 상자를 사용했습니다.

Dim ds As New DataSet 

Dim query As String = "select * from customer where " + colNames.SelectedValue.ToString + " LIKE " + "'%" + colValues.Text + "%'" 

CustomerTableAdapter.Connection.Open() 

Dim adp As New SqlDataAdapter(query, CustomerTableAdapter.Connection.ConnectionString) 

adp.Fill(ds, "customer") 

CustomerTableAdapter.Connection.Close() 

filteredRecords.DataSource = ds 

filteredRecords.DataMember = "customer" 

은 위의 코드는 6 행에 예외가 발생합니다 (adp.Fill (DS, "고객")) : "다 여기

내가의 클릭에 사용되는 코드 버튼을 검색입니다 -part 식별자 "System.Data.DataRowView"를 바인딩 할 수 없습니다. "

검색 기능을 구현할 수 있도록 디버깅을 도와 주시거나 새 코드를 제안하십시오.

+1

이렇게하지 마십시오. http://www.google.co.uk/q=sql+injection 및 http://xkcd.com/327/ – podiluska

답변

-1

아래 코드는 나를 위해 일한 :

<br><br>Private Sub colValues_TextChanged(sender As Object, e As EventArgs) Handles colValues.TextChanged 
<br>Dim ds As New DataSet 
<br>Dim query As String = "select * from customer where " + search_by.SelectedItem.ToString + " LIKE " + "'%" + colValues.Text + "%'" 
<br>CustomerTableAdapter.Connection.Open() 
<br>Dim adp As New SqlDataAdapter(query, CustomerTableAdapter.Connection.ConnectionString) 
<br>adp.Fill(ds, "customer") 
<br>CustomerTableAdapter.Connection.Close() 
<br>filteredRecords.DataSource = ds 
<br>filteredRecords.DataMember = "customer" 
<br>End Sub 

나는 검색 상자의 텍스트 변경 이벤트 내부의 전체 코드를 썼다.

위의 코드에서 search_by는 이름, 전화 번호, 주소 등 다양한 ccolumn 이름을 나열하는 목록 상자이며 colvalues는 검색 문자열을 입력 한 텍스트 상자의 이름입니다.

관련 문제