如何仅更新c#form应用程序访问数据库中的特定字段(其他字段应保持不变)
本文关键字:字段 其他 c#form 更新 何仅 应用程序 访问 数据库 | 更新日期: 2023-09-27 18:25:09
我正在c#中开发一个表单应用程序其中有一个我定期更新相同数据的表在我的数据库中,有一个名为customers的表,它有以下列
客户Id |余额|Last_Bill_Id | Last_Bill_Date|Last_Bil_Total|Last_Deposited|Last_Dosited_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_Deported_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);
}
现在,每当我用第二个代码更新我的dB时,保存在Last_Dosited和Last_Dosited_Date中的值都会被删除,我不想删除这些值,只想在这些字段有新值可用时更新。
如果您不想更新您的2个字段,您可以不在更新查询中分配它们。