2013-07-18 106 views
0

我一直想知道很長一段時間,我該如何設置我的SqlDataReader來填充我的datagridview「dtg_ksluzby」中的列「pocet」。我認爲我的代碼應該看起來像這樣:DataGridview中的SqlDataReader填充列

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 
      } 

你能幫我改進我的代碼嗎? 非常感謝。

編輯爲trippino:

  1. 在 「klisluz」,這是在包括列 (ID,akce,子項,文本,pocet)的表。我需要:
    1. SELECT * FROM klisluz其中子項= ' 「+ vyberradek +」'
    2. 採取列pocet它填進dtg_ksluzby在那裏我找到文本在列 「文本」 類似於dtg_ksluzby

我希望我的描述是understandabla,抱歉我的英語不好。

+0

您打算更新現有datagridview的列,並且已經綁定了數據嗎? – Damith

回答

1

使用這樣的事情:

 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 [email protected]", 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"]; 
       } 
      } 
     } 
+0

嗯,我不想添加行,但填寫現有的列,是否有可能?非常感謝你的回答。 –

+0

我編輯了我的答案,但我不明白你有多少行到數據庫*和*到gridView –

+0

您的第二個代碼工作正常,但是當我填充多行時,它只填充頂部的值。我想我嚴重地描述了我的問題。我加載類似5行的dtg_ksluzby。我想用「pocet」填充每行的值。我應該改變什麼? –

2

不要使用字符串連接來構建SQL命令,(爲了避免SQL注入和解析的問題)

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; 

    } 
} 

使用DataAdapter從加載數據數據庫並將此DataAdapter實例傳遞給DataGridView的DataSource