谁能告诉我这个更新声明有什么问题?访问主数据库
Can anyone tell me what's wrong with this Update Statement? Access Mdb
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
using (OleDbConnection conn = new OleDbConnection(Con))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE ACTB SET FirstName = @FirstName, LastName = @LastName, GrossIncome = @GrossIncome, LessTNT = @LessTNT, TaxableIncomeCE = @TCI, " +
"TaxableIncomePE = @ADDTI, GrossTaxableIncome = @GTI, LessTE = @LessTE, LessPPH = @LessPPH, NetTax = @LessNTI," +
"TaxDue = @TD, HeldTaxCE = @TWCE, HeldTaxPE = @TWPE, TotalTax = @TATW WHERE ID = @ID", conn);
// OleDbCommand cmd = new OleDbCommand("UPDATE ACTB SET (FirstName, LastName, GrossIncome, LessTNT, TaxableIncomeCE, TaxableIncomePE, GrossTaxableIncome, LessTE, LessPPH, NetTax, TaxDue, HeldTaxCE, HeldTaxPE, TotalTax) = " +
// "VALUES(@FirstName, @LastName, @GrossIncome, @LessTNT, @TCI, @ADDTI, @GTI, @LessTE, @LessPPH, @LessNTI, @TD, @TWCE, @TWPE, @TATW)", conn);
cmd.Parameters.AddWithValue("@ID", txtID.Text);
cmd.Parameters.AddWithValue("@FirstName", txtFirst.Text);
cmd.Parameters.AddWithValue("@LastName", txtLast.Text);
cmd.Parameters.AddWithValue("@GrossIncome", Convert.ToDouble(txtGross.Text));
cmd.Parameters.AddWithValue("@LessTNT", Convert.ToDouble(txtLessTNT.Text));
cmd.Parameters.AddWithValue("@TCI", Convert.ToDouble(txtTCI.Text));
cmd.Parameters.AddWithValue("@ADDTI", Convert.ToDouble(txtADDTI.Text));
cmd.Parameters.AddWithValue("@GTI", Convert.ToDouble(txtGTI.Text));
cmd.Parameters.AddWithValue("@LessTE", Convert.ToDouble(txtLessTE.Text));
cmd.Parameters.AddWithValue("@LessPPH", Convert.ToDouble(txtLessPPH.Text));
cmd.Parameters.AddWithValue("@LessNTI", Convert.ToDouble(txtLessNTI.Text));
cmd.Parameters.AddWithValue("@TD", Convert.ToDouble(txtTD.Text));
cmd.Parameters.AddWithValue("@TWCE", Convert.ToDouble(txtTWCE.Text));
cmd.Parameters.AddWithValue("@TWPE", Convert.ToDouble(txtTWPE.Text));
cmd.Parameters.AddWithValue("@TATW", Convert.ToDouble(txtTATW.Text));
cmd.ExecuteNonQuery();
conn.Close();
}
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
lblSuccess.Text = "Successfully updated the records!";
Restore();
}
}
一直在寻找这方面的问题,但我找不到。它不会更新 Restore()
顺便说一句处理的 table。没有抛出任何错误。
虽然它确实有一个 "Connection string not properly initialized" 和更新语句错误之前的错误。
OleDbCommand
没有Name值参数的概念。因此,您必须 以与查询中相同的顺序定义它们。
所以第一个参数应该是
cmd.Parameters.AddWithValue("@FirstName", txtFirst.Text);
cmd.Parameters.AddWithValue("@LastName", txtLast.Text);
//and so on ...
//last one
cmd.Parameters.AddWithValue("@ID", txtID.Text);
也可以使用@
在多行上写字符串。
P.S 使用 using 时不需要 Close() 连接,这是由 Dispose()
自动完成的
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
using (OleDbConnection conn = new OleDbConnection(Con))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE ACTB SET FirstName = @FirstName, LastName = @LastName, GrossIncome = @GrossIncome, LessTNT = @LessTNT, TaxableIncomeCE = @TCI, " +
"TaxableIncomePE = @ADDTI, GrossTaxableIncome = @GTI, LessTE = @LessTE, LessPPH = @LessPPH, NetTax = @LessNTI," +
"TaxDue = @TD, HeldTaxCE = @TWCE, HeldTaxPE = @TWPE, TotalTax = @TATW WHERE ID = @ID", conn);
// OleDbCommand cmd = new OleDbCommand("UPDATE ACTB SET (FirstName, LastName, GrossIncome, LessTNT, TaxableIncomeCE, TaxableIncomePE, GrossTaxableIncome, LessTE, LessPPH, NetTax, TaxDue, HeldTaxCE, HeldTaxPE, TotalTax) = " +
// "VALUES(@FirstName, @LastName, @GrossIncome, @LessTNT, @TCI, @ADDTI, @GTI, @LessTE, @LessPPH, @LessNTI, @TD, @TWCE, @TWPE, @TATW)", conn);
cmd.Parameters.AddWithValue("@ID", txtID.Text);
cmd.Parameters.AddWithValue("@FirstName", txtFirst.Text);
cmd.Parameters.AddWithValue("@LastName", txtLast.Text);
cmd.Parameters.AddWithValue("@GrossIncome", Convert.ToDouble(txtGross.Text));
cmd.Parameters.AddWithValue("@LessTNT", Convert.ToDouble(txtLessTNT.Text));
cmd.Parameters.AddWithValue("@TCI", Convert.ToDouble(txtTCI.Text));
cmd.Parameters.AddWithValue("@ADDTI", Convert.ToDouble(txtADDTI.Text));
cmd.Parameters.AddWithValue("@GTI", Convert.ToDouble(txtGTI.Text));
cmd.Parameters.AddWithValue("@LessTE", Convert.ToDouble(txtLessTE.Text));
cmd.Parameters.AddWithValue("@LessPPH", Convert.ToDouble(txtLessPPH.Text));
cmd.Parameters.AddWithValue("@LessNTI", Convert.ToDouble(txtLessNTI.Text));
cmd.Parameters.AddWithValue("@TD", Convert.ToDouble(txtTD.Text));
cmd.Parameters.AddWithValue("@TWCE", Convert.ToDouble(txtTWCE.Text));
cmd.Parameters.AddWithValue("@TWPE", Convert.ToDouble(txtTWPE.Text));
cmd.Parameters.AddWithValue("@TATW", Convert.ToDouble(txtTATW.Text));
cmd.ExecuteNonQuery();
conn.Close();
}
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
lblSuccess.Text = "Successfully updated the records!";
Restore();
}
}
一直在寻找这方面的问题,但我找不到。它不会更新 Restore()
顺便说一句处理的 table。没有抛出任何错误。
虽然它确实有一个 "Connection string not properly initialized" 和更新语句错误之前的错误。
OleDbCommand
没有Name值参数的概念。因此,您必须 以与查询中相同的顺序定义它们。
所以第一个参数应该是
cmd.Parameters.AddWithValue("@FirstName", txtFirst.Text);
cmd.Parameters.AddWithValue("@LastName", txtLast.Text);
//and so on ...
//last one
cmd.Parameters.AddWithValue("@ID", txtID.Text);
也可以使用@
在多行上写字符串。
P.S 使用 using 时不需要 Close() 连接,这是由 Dispose()