0

データベースと対話するプログラムを必要とする大学のプロジェクトを完了しようとしています。

私のネーミングは少し変わっていますが、心配しないでください。

単一の送信ボタンを使用して、データベースを更新または挿入しようとしています。

主な問題は、更新を機能させることができないことですが、コードを変更して修正しようとすると、さらに悪化しました。これが私が現在持っているものです。

private void btn_submit_Click(object sender, EventArgs e)
{
   using (SqlCeConnection con = new SqlCeConnection(@"Data Source=G:\Dropbox\HND\Visual Studio\Visual C#\TestForms\TestForms\Database1.sdf"))
   {
      con.Open();
      string taskSel = "SELECT TaskCode FROM TaskCode;";
      SqlCeCommand c1 = new SqlCeCommand(taskSel, con);
      SqlCeDataReader reader;
      reader = c1.ExecuteReader();

      if (reader.Read())
      {
         try
         {
            string taskUpdate = "UPDATE TaskCode SET TaskCode = @TaskCode, TaskDescription = @TaskDescription = WHERE TaskCode = @TaskCode;";
            SqlCeCommand c = new SqlCeCommand(taskUpdate, con);
            c.Parameters.AddWithValue("@TaskCode", cbx_taskCode.Text);
            c.Parameters.AddWithValue("@TaskDescription", txt_desc.Text);
            c.ExecuteNonQuery();
            con.Close();
            MessageBox.Show("Record has been updated");
            MainMenu.Current.Show();
            this.Close();
         }
         catch (SqlCeException exp)
         {
            MessageBox.Show(exp.ToString());
         }
      }
      else
      {
         try
         {
            string taskInsert = "INSERT INTO TaskCode VALUES (@TaskCode, @TaskDescription);";
            SqlCeCommand c = new SqlCeCommand(taskInsert, con);
            c.Parameters.AddWithValue("@TaskCode", cbx_taskCode.Text);
            c.Parameters.AddWithValue("@TaskDescription", txt_desc.Text);
            c.ExecuteNonQuery();
            con.Close();
            MessageBox.Show("Record has been added");
            MainMenu.Current.Show();
            this.Close();
         }
         catch (SqlCeException exp)
         {
            MessageBox.Show(exp.ToString());
         }
      }
   }
}

c.ExecuteQuery回線でエラーが発生する理由を誰かが知っていますか?

上記の行を削除すると、例外はスローされませんが、データベースは更新されません。

ありがとう

4

2 に答える 2