私は自分のデータベースで同じデータを定期的に更新していたテーブルがあるC#のフォームアプリに取り組んでいます顧客という名前のテーブルがあり、次の列があります
顧客 ID | バランス | Last_Bill_Id | Last_Bill_Date | Last_Bill_Total | Last_Deposited | Last_Deposited_Date |
現在、このコードを使用してデータベースを更新しています
try
{
OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = G:\\my Documents\\Visual Studio 2008\\Projects\\xml_and_db_test\\xml_and_db_test\\bin\\Debug\\database_for_kissan_Pashu_AhaR_Bills.mdb");
string queryText = "UPDATE Customers SET Balance = ? ,Last_Bill_Id = ?,Last_Bill_Date = ? ,Last_Bill_Total = ?,Last_Deposited = ? , Last_Deposited_Date =? where CustomerId = ?;";
OleDbCommand cmd = new OleDbCommand(queryText, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("Balance", OleDbType.Integer).Value = Convert.ToInt32(textBox2.Text);
cmd.Parameters.Add("Last_Bill_Id", OleDbType.Integer).Value = 15;
cmd.Parameters.Add("Last_Bill_Date", OleDbType.Date).Value = DateTime.Now;
cmd.Parameters.Add("Last_Bill_Total", OleDbType.Integer).Value = 1560;
cmd.Parameters.Add("Last_Deposited", OleDbType.Integer).Value = 500;
cmd.Parameters.Add("Last_Deposited_Date", OleDbType.Date).Value = DateTime.Now;
cmd.Parameters.Add("CustomerId", OleDbType.Integer).Value = Convert.ToInt32(textBox1.Text);
con.Open(); // open the connection
//OleDbDataReader dr = cmd.ExecuteNonQuery();
int yy = cmd.ExecuteNonQuery();
textBox3.Text = "update Done";
con.Close();
}
catch (Exception ex)
{
string c = ex.ToString();
MessageBox.Show(c);
}
問題Last_Deposited および Last_Deposited_Dateフィールド を更新したくない場合があるので 、このコードを試してみました
try
{
OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = G:\\my Documents\\Visual Studio 2008\\Projects\\xml_and_db_test\\xml_and_db_test\\bin\\Debug\\database_for_kissan_Pashu_AhaR_Bills.mdb");
string queryText = "UPDATE Customers SET Balance = ? ,Last_Bill_Id = ?,Last_Bill_Date = ? ,Last_Bill_Total = ? where CustomerId = ?;";
OleDbCommand cmd = new OleDbCommand(queryText, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("Balance", OleDbType.Integer).Value = Convert.ToInt32(textBox2.Text);
cmd.Parameters.Add("Last_Bill_Id", OleDbType.Integer).Value = 15;
cmd.Parameters.Add("Last_Bill_Date", OleDbType.Date).Value = DateTime.Now;
cmd.Parameters.Add("Last_Bill_Total", OleDbType.Integer).Value = 1560;
// cmd.Parameters.Add("Last_Deposited", OleDbType.Integer).Value = 500;
// cmd.Parameters.Add("Last_Deposited_Date", OleDbType.Date).Value = DateTime.Now;
cmd.Parameters.Add("CustomerId", OleDbType.Integer).Value = Convert.ToInt32(textBox1.Text);
con.Open(); // open the connection
//OleDbDataReader dr = cmd.ExecuteNonQuery();
int yy = cmd.ExecuteNonQuery();
textBox3.Text = "update Done";
con.Close();
}
catch (Exception ex)
{
string c = ex.ToString();
MessageBox.Show(c);
}
2 番目のコードで dB を更新するたびに、Last_Deposited および Last_Deposited_Date に保存された値が削除されます。これらの値を削除したくありません。これらのフィールドで新しい値が利用可能になったときにのみ更新したいのです。