如果项在表中,则复选SqlDataReader复选框

时间:2013-07-18 09:57:47

标签: c# sql sql-server

我想知道当值在数据库中时,如何在dtg_ksluzby中的列[3]中选中复选框。

klisluz(我从中获取数据的表)包含列,id,子键(即= vyberradek),text,pocet 这是插入db。

的代码
  foreach (DataGridViewRow row in dtg_ksluzby.Rows)
            {

                if (Convert.ToBoolean(row.Cells[3].Value) == true) 
                {
                    SqlCommand prikaz2 = new SqlCommand("INSERT INTO klisluz(text,pocet,akce,subkey) values(@val1,@val2,@val3,@val4) ", spojeni);
                    prikaz2.Parameters.AddWithValue("@val1", row.Cells["text"].Value);
                    prikaz2.Parameters.AddWithValue("@val2", row.Cells["pocet"].Value);
                    prikaz2.Parameters.AddWithValue("@val3", row.Cells["akce"].Value);
                    prikaz2.Parameters.AddWithValue("@val4", max + 1);
                    spojeni.Open();
                    prikaz2.ExecuteNonQuery();
                    spojeni.Close();
                }
            }

现在,我想在项目插入数据库时​​选中复选框。 有人会给我一个线索吗?

我想我可以算算这个算法,但是我不知道如何把它变成代码我认为我可以像这样做:

 SqlCommand novyprikaz3 = new SqlCommand("SELECT * FROM klient WHERE ID_K=" + vyberradek, spojeni); //vyberradek selects row ID
            spojeni.Open();
            SqlDataReader precti = novyprikaz.ExecuteReader();

            if (precti.Read())
            {
                If text in (row where ID_K=number which comes from vyberradek) is in dtg_ksluzby then check the checkbox in the same row 
 }

我想用它来让USER知道他在编辑之前选择了哪些列 非常感谢提前。

2 个答案:

答案 0 :(得分:2)

 for (int i = 0; i < dtg_ksluzby.Rows.Count; i++)
        {
            var row = dtg_ksluzby.Rows[i];
            using(var novyprikaz2 = new SqlCommand("SELECT * FROM klient WHERE ID_K=" + vyberradek, spojeni))
            {
                spojeni.Open();
                SqlDataReader precti2 = novyprikaz2.ExecuteReader();
                if (precti2.HasRows)
                {
                    row.Cells[3].Value = true;
                }
            }
        }

您必须相应地将vyberradek更改为行内容。

答案 1 :(得分:1)

尝试count并使用ExecuteScalar,如下所示

SqlCommand novyprikaz3 = new SqlCommand("SELECT count(1) FROM klient WHERE ID_K=" + vyberradek, spojeni); //vyberradek selects row ID
            spojeni.Open();
            Int32 cnt = (Int32) novyprikaz.ExecuteScalar();

如果cnt大于0,则项目存在。