如何将值插入表中并使用一个按钮更新另一个表中的值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将值插入表中并使用一个按钮更新另一个表中的值?相关的知识,希望对你有一定的参考价值。
我有两个表,称为支付和约会,使用约会相互关系。对于我当前的代码,它只会在付款表中插入值。我想要实现的是,如果我键入包含约会的形式的值,然后单击提交,我刚刚输入的约会,也将更新该约会表aStatus的记录,以完成或等待。对于我的aStatus组合框,我在item属性中等待并完成填充它。目前我的代码只能插入到支付表中。 aStatus在另一张表中,即约会表。
这是我为aStatus插入下拉列表代码。我希望它更新一个约会表思路的状态。那么如何在一个按钮中将此代码与我的底码相结合?此代码将在约会表中更新aStatus,底部的代码将在付款表中插入值。
string value = cbaStatus.SelectedItem == null ? "waiting" : cbaStatus.SelectedItem.ToString();
updateCmd.Parameters.AddWithValue("@cbaStatus", value);
我的表格
我的桌子和关系
史蒂夫代码出错
private void btnSubmit_Click(object sender, EventArgs e)
{
int result = AddPaymentRecord();
if (result > 0)
{
MessageBox.Show("Insert Successful");
txtamount.Clear();
txtamountPaid.Clear();
txtappointmentID.Clear();
txtamount.Focus();
}
else
{
MessageBox.Show("Insert Fail");
txtamount.Clear();
txtamountPaid.Clear();
txtappointmentID.Clear();
txtamount.Focus();
}
}
private int AddPaymentRecord()
{
int result = 0;
string strConnectionString = ConfigurationManager.ConnectionStrings["sacpConnection"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConnectionString);
String strCommandText = "INSERT PAYMENT(amount, amountPaid, paymentDate, paymentType, appointmentID) "
+ " VALUES (@Newamount, @NewamountPaid,@NewpaymentDate, @NewpaymentType, @NewappointmentID)";
SqlCommand updateCmd = new SqlCommand(strCommandText, myConnect);
updateCmd.Parameters.AddWithValue("@Newamount", txtamount.Text);
updateCmd.Parameters.AddWithValue("@NewamountPaid", txtamountPaid.Text);
updateCmd.Parameters.AddWithValue("@NewpaymentDate", dtppaymentDate.Value);
if (rbCash.Checked)
updateCmd.Parameters.AddWithValue("@NewpaymentType", "Cash");
else
updateCmd.Parameters.AddWithValue("@NewpaymentType", "Credit Card");
updateCmd.Parameters.AddWithValue("@NewappointmentID", txtappointmentID.Text);
myConnect.Open();
result = updateCmd.ExecuteNonQuery();
myConnect.Close();
return result;
}
答案
您有两个选项,将参数传递给存储过程,该过程将记录插入到付款表中并更新Appointement表,或者从代码中执行这两个命令。
无论哪种方式,您都需要提供交易以避免存储付款记录(如果出现错误)并且无法更新相应的约会记录。
让我们试试代码版本(请测试它,因为我已经在这里写了动态)
private int AddPaymentRecord()
{
int result = 0;
// The command text contains two statements separated by a semicolon
String strCommandText = @"INSERT PAYMENT(amount, amountPaid, paymentDate,
paymentType, appointmentID) VALUES (@Newamount,
@NewamountPaid,@NewpaymentDate,@NewpaymentType,
@NewappointmentID);
UPDATE Appointment SET aStatus=@cbaStatus
WHERE appointmentID = @NewappointmentID";
string strConnectionString = ConfigurationManager.ConnectionStrings["sacpConnection"].ConnectionString;
using(SqlConnection myConnect = new SqlConnection(strConnectionString))
{
myConnect.Open();
// Start a transaction to be sure that the two commands are both executed
SqlTransaction tran = myConnect.BeginTransaction();
try
{
using(SqlCommand updateCmd = new SqlCommand(strCommandText, myConnect, tran))
{
updateCmd.Parameters.AddWithValue("@Newamount", txtamount.Text);
updateCmd.Parameters.AddWithValue("@NewamountPaid", txtamountPaid.Text);
updateCmd.Parameters.AddWithValue("@NewpaymentDate", dtppaymentDate.Value);
if (rbCash.Checked)
updateCmd.Parameters.AddWithValue("@NewpaymentType", "Cash");
else
updateCmd.Parameters.AddWithValue("@NewpaymentType", "Credit Card");
updateCmd.Parameters.AddWithValue("@NewappointmentID", txtappointmentID.Text);
string value = cbaStatus.SelectedItem == null ?
"waiting" : cbaStatus.SelectedItem.ToString();
// Add also the parameter required by the second batch statement
updateCmd.Parameters.AddWithValue("@cbaStatus", value);
result = updateCmd.ExecuteNonQuery();
// If we reach this point we have updated both records.
// Commit the changes
tran.Commit();
}
return result;
}
catch
{
// Something wrong. rollback any changes and rethrow the exception
// let the caller code handle this exception.
tran.Rollback();
throw;
}
}
}
另一答案
在成功地从XML中插入表A中的数据之后,我想在表B中插入两个字段,即“for_dt”,另一个是“加载指示”。
以上是关于如何将值插入表中并使用一个按钮更新另一个表中的值?的主要内容,如果未能解决你的问题,请参考以下文章