SQLDataAdapter添加where子句

时间:2013-06-18 15:49:13

标签: c# sql sqldataadapter

我有一个名为recordID的文本框 我已使用以下内容声明了一个名为ID的变量:

int ID = Convert.ToInt32(recordID.Text);

最后,我有一些代码可以在单击按钮后刷新gridview,它可以完美地运行,但是,会带回表中的所有内容:

        using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM TEST_TABLE", conn))
        {

            // Use DataAdapter to fill DataTable
            DataTable t = new DataTable();
            a.Fill(t);

            // Render data onto the screen
            gridSelectID.DataSource = t; 
        }

我需要在查询被更改时更改它,以便它添加一个位置并将其过滤到上面提到的ID的值(取自recordID.Text,这是一个文本框)

我试过这个:

        using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM TEST_TABLE WHERE ID = filter", conn))
        {
            int filter = ID;
            // Use DataAdapter to fill DataTable
            DataTable t = new DataTable();
            a.Fill(t);

            // Render data onto the screen
            gridSelectID.DataSource = t; 
        }

但它抱怨Invalid Column name 'filter' 我需要这个来通过在代码顶部声明的ID来过滤查询。

2 个答案:

答案 0 :(得分:5)

您无法自动将变量绑定到命令。您需要手动执行此操作,例如:

using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM TEST_TABLE WHERE ID = @filter", conn))
{
    int filter = ID;
    a.SelectCommand.Parameters.AddWithValue("@filter", filter);

答案 1 :(得分:1)

using (SqlDataAdapter a = new SqlDataAdapter(string.Format("SELECT * FROM TEST_TABLE WHERE ID = '{0}'",ID), conn))            {

            // Use DataAdapter to fill DataTable
            DataTable t = new DataTable();
            a.Fill(t);

            // Render data onto the screen
            gridSelectID.DataSource = t; 
        }