从访问数据库中搜索后,如何在按钮单击时填充gridview?

时间:2012-07-04 09:11:05

标签: c# sql

我正在c#.net中创建一个表单。我想仅在点击按钮时填充gridview,条目符合搜索条件。

我已经尝试了但是在搜索ID时它可以工作但是在搜索FirstName时它会给出错误plz检查SQL。

代码背后:

private void button1_Click(object sender, EventArgs e)
 {
            try
            {
                string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=L:/New project/Project/Project/Data.accdb";

                string sql = "SELECT * FROM AddressBook WHERE FirstName='" + textBox1.Text.ToString();
                OleDbConnection connection = new OleDbConnection(strConn);
                OleDbDataAdapter dataadapter = new OleDbDataAdapter(sql, connection);
                DataSet ds = new DataSet();
                connection.Open();
                dataadapter.Fill(ds, "AddressBook");
                connection.Close();
                dataGridView1.DataSource = ds;

                dataGridView1.DataMember = "AddressBook";
            }
            catch (System.Exception err)
            {
                this.label27.Visible = true;
                this.label27.Text = err.Message.ToString();
            }
   }

1 个答案:

答案 0 :(得分:0)

你忘记了databind();

dataGridView1.DataSource = ds;
dataGridView1.DataBind();



"SELECT * FROM AddressBook WHERE FirstName Like '%" + textBox1.Text + "%'";

但是请记住这个SQL查询容易受到SQL注入攻击,所以请确保在完成所有工作后过滤掉不良字符

您的错误是由于您未关闭查询而产生的 FirstName='" + textBox1.Text.ToString();应为FirstName='" + textBox1.Text.ToString() + "'";,但您必须输入正确的名称

使用“喜欢”可以获得更多结果

FirstName Like '%" + textBox1.Text.ToString() + "%'";

由于Text Property已经是一个字符串

,因此不需要ToString()