0

大家好,我有这些插入和选择的 SqlCommands。我需要添加到 prikaz2(其中 INSERT INTO)条件,它将仅 INSERT INTO 由 CHECKBOX 选择的这些行。

我很长时间以来一直在想这个问题,但我的代码都无法做到这一点。

你们有什么建议吗?我认为我必须添加“WHERE”?

  SqlCommand comm = new SqlCommand("Select MAX (ID_K) FROM klient", spojeni);
            spojeni.Open();
            int max = (int)comm.ExecuteScalar();
            spojeni.Close();

            for (int i = 0; i < dtg_ksluzby.Rows.Count; i++)
            {
                SqlCommand prikaz2 = new SqlCommand("INSERT INTO klisluz(text,pocet,akce,subkey) values(@val1,@val2,@val3,@val4) ", spojeni); // here I need to add condition to INSERT INTO only selected rows
                prikaz2.Parameters.AddWithValue("@val1", dtg_ksluzby.Rows[i].Cells["text"].Value);
                prikaz2.Parameters.AddWithValue("@val2", dtg_ksluzby.Rows[i].Cells["pocet"].Value);
                prikaz2.Parameters.AddWithValue("@val3", dtg_ksluzby.Rows[i].Cells["akce"].Value);
                prikaz2.Parameters.AddWithValue("@val4", max + 1);                     spojeni.Open();
                prikaz2.ExecuteNonQuery();
                spojeni.Close();
  } 
     private void dtg_ksluzby_CellValueChanged(object sender,
                                   DataGridViewCellEventArgs e)

这是我选择 row.e 的代码

     foreach (DataGridViewRow row in dtg_ksluzby.Rows)
     {

         DataGridViewCheckBoxCell chk1 = row.Cells[3] as DataGridViewCheckBoxCell;
         if (Convert.ToBoolean(chk1.Value) == true)
         {

             MessageBox.Show("Služba byla vybrána");
         }
         else
         {
         }
     }
4

2 回答 2

2

加入这两个语句怎么样?

INSERT INTO klisluz(text,pocet,akce,subkey) 
VALUES (@val1,
        @val2,
        @val3,
        COALESCE((Select MAX (ID_K) FROM klient) + 1, 1)
于 2013-07-17T13:36:49.027 回答
2

因此,用迭代 dtg_ksluzby.Rows 的 ForEach 替换您的 for 循环,并执行检查以查看它是否在循环内进行了检查。

foreach (DataGridViewRow row in dtg_ksluzby.Rows)
        {
            if (Convert.ToBoolean(row.Cells[3].Value) == true) // check this line here
            {
                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();
            }
        }
于 2013-07-17T14:02:36.457 回答