0

我一直想知道如何设置我的SqlDataReader 来填充我的datagridview“dtg_ksluzby”中的“pocet”列。我认为我的代码应该是这样的:

 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. 在包含列(id、akce、subkey、text、pocet)的表中的“klisluz”中。我需要:
    1. select * from klisluz where subkey = '"+vyberradek+"'
    2. 取列 pocet 并将其填充到 dtg_ksluzby 中,我发现 dtg_ksluzby 中的“文本”列中的文本相似

我希望我的描述是可以理解的,对不起我的英语不好。

4

2 回答 2

2

不要使用字符串连接来构建sql命令,(避免Sql Injection和解析问题)

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

于 2013-07-18T08:49:37.967 回答
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 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"];
                }
            }
        }
于 2013-07-18T08:47:18.630 回答