Blaze M
Blaze M

Reputation: 200

SqlDataReader filling column in datagridview

I have been wondering for quiet long time how can I set my SqlDataReader to fill column "pocet" in my datagridview "dtg_ksluzby". I thought that my code should look something like this:

 SqlCommand novyprikaz2 = new SqlCommand("SELECT pocet FROM klisluz WHERE id='"+vyberradek+"'",spojeni); // I also have column "pocet" in table klisluz, vyberradek is string which selectrs id number
            spojeni.Open();
            SqlDataReader precti2 = novyprikaz2.ExecuteReader();
            if (precti2.Read())
            {
                dtg_ksluzby.Columns["pocet"]; // this part I need to improve to fill
            }

Would you please help me to improve my code? Thanks so much in advance.

Edit for trippino:

  1. In "klisluz" which is in the table that includes columns (id,akce,subkey,text,pocet). I need to:
    1. select * from klisluz where subkey = '"+vyberradek+"'
    2. Take column pocet and fill it into dtg_ksluzby where i find the text is similar in column "text" in dtg_ksluzby

I hope my description is understandabla, sorry for my weak english.

Upvotes: 0

Views: 6802

Answers (2)

Steve
Steve

Reputation: 216243

Do not use string concatenation to build sql commands, (to avoid Sql Injection and parsing problem)

using(SqlConnection spojeni = new SqlConnection(conString))
using(SqlCommand novyprikaz2 = new SqlCommand("SELECT pocet FROM klisluz " + 
                                              "WHERE id = @id",spojeni); 
{
     novyprikaz2.Parameters.AddWithValue("@id", vyberradek);
     spojeni.Open();
     using(SqlDataAdapter da = new SqlDataAdapter(novyprikaz2))
     {
        DataTable dt = new DataTable();
        da.Fill(dt);
        dtg_ksluzby.DataSource = dt;

     }
 }

Use a DataAdapter to load your data from database and pass this DataAdapter instance to the DataSource of your DataGridView

Upvotes: 2

Tobia Zambon
Tobia Zambon

Reputation: 7619

Use something like this:

        for (int i = 0; i < dtg_ksluzby.Rows.Count; i++)
        {
            var row = dtg_ksluzby.Rows[i];
            using(var novyprikaz2 = new SqlCommand("SELECT pocet FROM klisluz WHERE text LIKE @t AND subkey=@s", spojeni))
            {
                novyprikaz2.Parameters.AddWithValue("@t", row.Cells["text"].Value.ToString());
                novyprikaz2.Parameters.AddWithValue("@s", vyberradek);
                spojeni.Open();
                SqlDataReader precti2 = novyprikaz2.ExecuteReader();
                if (precti2.Read())
                {
                    row.Cells["pocet"].Value = precti2["pocet"];
                }
            }
        }

Upvotes: 1

Related Questions