2014-09-13 2 views
0

사용자가 열을 선택하고 검색 단어를 입력 할 수있는 응용 프로그램에서 데이터베이스 검색을 만들려고하는데 결과가 dataviewgrid에 표시됩니다. 이것은 내가 작업해온 코드입니다. 문제는 아무것도 나오지 않고 데이터베이스에 항목이 있다는 것입니다. 편집 : 그것은 당신이 컬럼의 이름을 표현하는 매개 변수를 사용할 수없는 데이터 소스C#에서 sql 검색 쿼리

dataGridView1.DataSource = ds.Tables[0]; 
dataGridView1.DataBind(); 
+0

는'Tclients' 테이블이'선택이 포함되어 있습니까 쿼리 작성 후 열 이름으로 콤보 상자를 채우고 (사용자가 컬럼의 이름을 입력하는 것을 허용하지 않습니다) DropDownList에 그 DropDownStyle 속성을 설정해야 '열? 필터링 할 열은 무엇입니까? –

+1

매개 변수를 사용하여 열 또는 테이블 이름의 이름을 나타낼 수 없습니다. – Steve

+0

나는 네가 그렇게 할 수 없다는 것을 몰랐다. –

답변

3

후이 추가 데이터 소스와 그리드 뷰를 결합하는 것을 잊었다 윈도우 폼 응용 프로그램

private void button1_Click(object sender, EventArgs e) 
    { 
     conn = new SqlConnection("Server = localhost; database = Clients; Integrated Security = SSPI"); 
     conn.Open(); 
     SqlCommand cmd = new SqlCommand("SELECT * From dbo.Tclients WHERE @choice = @input", conn); 
     cmd.Parameters.AddWithValue("@choice", comboBox1.Text); 
     cmd.Parameters.AddWithValue("@input", textBox1.Text); 
     ds = new DataSet(); 
     da = new SqlDataAdapter(cmd); 
     da.Fill(ds); 
     dataGridView1.DataSource = ds.Tables[0]; 
     conn.Close(); 
    } 
+0

나는 이것이 Sql Injection을 위해 열려 있다고 생각한다! 그냥 열 이름을 써라! – mybirthname

+0

열 이름을 콤보 상자에 추가해야하며 DropDownStyle을 DropDownList로 설정해야한다고 지정했습니다. 이 스타일로 편집 할 수 없음 – Steve

+0

내가 원했던대로 편집되었습니다. 도움을 청합니다. –

0

입니다. 당신은

private void button1_Click(object sender, EventArgs e) 
{ 
    string cmdText = "SELECT * From dbo.Tclients WHERE " + comboBox1.Text + " = @input"; 
    using(SqlConnection conn = new SqlConnection(....)) 
    using(SqlCommand cmd = new SqlCommand(cmdText, conn)) 
    { 
     conn.Open(); 
     cmd.Parameters.AddWithValue("@input", textBox1.Text); 
     ds = new DataSet(); 
     da = new SqlDataAdapter(cmd); 
     da.Fill(ds); 
     dataGridView1.DataSource = ds.Tables[0]; 
    } 
} 
+1

DataGridView (또는 더 나은 WinForm 앱)에서는 DataBind 호출이 필요하지 않습니다. – Steve

+0

dataGridView1.DataBind()를 추가하면 오류가 발생합니다. –

+0

ASP.NET 응용 프로그램을 확인할 수 있습니까? 오류 메시지 란 무엇입니까? – chrana