Sam Nasser
Sam Nasser

Reputation: 321

sql search query in c#

I'm trying to make a database search in my app where the user would choose the column and enter the search word and the result would come up in a dataviewgrid. This is the code i've been working on, the problem is that nothing comes up and i'm pretty sure there are entries in the database. EDIT : it's a windows form application

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();
    }

Upvotes: 1

Views: 10641

Answers (3)

poom poom
poom poom

Reputation: 1

    private void bunifuThinButton21_Click(object sender, EventArgs e)
    {
        SqlConnection connection = new SqlConnection();
        connection.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\albasheer\Desktop\games\my_school\my_school\school.mdf;Integrated Security=True;User Instance=True");
        connection.Open();
        string sql = "select name,id,stage,age,cost from STUDENT where   stage like '%" + bunifuCustomLabel1.Text + "%' and name like '%" + bunifuMaterialTextbox1.Text + "%'";
        SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);

        SqlCommand command = new SqlCommand(sql, connection);



        DataTable table = new DataTable();
        adapter.Fill(table);
        var dt = from t in table.AsEnumerable()
                 select new
                 {
                     id = t.Field<int>("id"),
                     Name = t.Field<string>("name"),
                    

                 };

        bunifuCustomDataGrid1.DataSource = dt.ToList();
    }

Upvotes: 0

Steve
Steve

Reputation: 216358

You cannot use a parameter to express the name of a column. You should populate your combobox with the column names and set its DropDownStyle property to DropDownList (do not allow your user to type the name of the column) and then build your query

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];
    }
}

Upvotes: 3

chrana
chrana

Reputation: 209

you forgot to bind the grid view with datasource add this after data source

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

Upvotes: 0

Related Questions