C# 从数据库向datagrid添加数据行

C# 从数据库向datagrid添加数据行,c#,.net,database,sql-server-2008,C#,.net,Database,Sql Server 2008,我不熟悉数据库。我正在尝试创建一个搜索实用程序,将用户输入字符串与数据库中的记录相匹配并显示它们 System.Data.SqlClient.SqlConnection con; System.Data.SqlClient.SqlDataAdapter da; DataSet ds1; private void Form1_Load(object sender, EventArgs e) { con = new System.Data.SqlClient.Sql

我不熟悉数据库。我正在尝试创建一个搜索实用程序,将用户输入字符串与数据库中的记录相匹配并显示它们

System.Data.SqlClient.SqlConnection con;
System.Data.SqlClient.SqlDataAdapter da;
DataSet ds1;

    private void Form1_Load(object sender, EventArgs e)
    {
        con = new System.Data.SqlClient.SqlConnection();
        ds1 = new DataSet();

        con.ConnectionString = "";

        con.Open();

        string sql = "SELECT * From tblLecturers";
        da = new System.Data.SqlClient.SqlDataAdapter(sql, con);

        da.Fill(ds1, "Lecturers");

        con.Close();
    }

    Form2 secondForm = new Form2();

    private void btnFind_Click(object sender, EventArgs e)
    {
        this.Hide();
        secondForm.Show();

        string searchFor = textBox1.Text;
        int results = 0;
        int i;

        DataRow[] returnedRows; 

        if (radioButton1.Checked)
        {
            returnedRows = ds1.Tables["Lecturers"].Select("Name like '%" + searchFor + "%'");
        }
        else
        {
            returnedRows = ds1.Tables["Lecturers"].Select("Department like '%" + searchFor + "%'");
        }

        results = returnedRows.Length;

        if (results > 0)
        {
            secondForm.dataGridView1.DataSource = returnedRows;
        }
        else
        {
            MessageBox.Show("No such Record");
        }

    }
没有错误,但它只是显示一个空白网格。returnedRows包含内容与用户输入匹配的所有行。但我很确定这不是:

            secondForm.dataGridView1.DataSource = returnedRows;
已尝试行。使用for循环添加,将不起作用。我该怎么做


提前感谢。

调用gridView的BindMethod

  if (results > 0)
    {
        secondForm.dataGridView1.DataSource = returnedRows;
        secondForm.dataGridView1.DataBind();
    }
    else
    {
        MessageBox.Show("No such Record");
    }

忽略数据绑定方法,没有适用于windows GridView的方法。
datarow数组可以添加到dataset或datatable,使用dataset或datatable我们可以直接绑定GridView

您的代码在SQL注入方面有问题。您应该使用参数化查询,或者正确转义用户输入。我不确定是否遵循。你能说得更具体一点吗?想象一下,如果有人试图搜索
O'Reilly
,你的程序会怎么样。或者自己试试看。这个注释框太小,我无法深入了解所有细节,因此我建议您在编写更多代码之前研究SQL注入以及如何避免它。如果您将Linq用于选择方法,而不是参数化查询,那么这一切可能会更干净、更简单。您是否尝试调用
secondForm.dataGridView1.Refresh()
以确保它重新绘制自身?表示dataGridView1没有扩展方法DataBind。顺便问一下,windows窗体应用程序是否需要数据绑定?0下一票忽略数据绑定方法,windows GridView没有方法。datarow数组可以添加到dataset或datatable中,使用dataset或datatable我们可以直接绑定GridViewI创建一个新的dataset,然后添加dataRows:dataset dt=new dataset();dt.合并(返回箭头);secondForm.dataGridView1.DataSource=returnedRows;不显示。这是一个注释而不是答案。看起来像是你之前在自己的答案上留下的评论。你可能应该继续删除这个。