我无法获得ASP.NET网络表单来更新数据库。我试图编辑数据库中的现有记录。 webform将记录中的数据填充到表单中。然后,用户在提交表单时更改数据并更新数据库中的记录。
问题是,在提交修改后的表单时,数据库中没有任何更改。我在这做错了什么? SQL可以在MSSQL Management Studio中使用。
感谢。
private void SaveToDatabase ()
{
using (SqlConnection conn = new SqlConnection (_connectionString_Bluebook))
{
conn.Open ();
string sql = @"update Companies
set CompanyName=@CompanyName, AccountNo=@AccountNo
where AccountNo=" + _accountNo;
using (SqlCommand command = new SqlCommand (sql, conn))
{
command.Parameters.Add (new SqlParameter ("@CompanyName", TextBox_CompanyName.Text));
command.Parameters.Add (new SqlParameter ("@AccountNo", TextBox_Account.Text));
command.ExecuteNonQuery ();
}
conn.Close ();
}
}
答案 0 :(得分:0)
尝试在查询中添加原始帐号的参数。下面的示例使用强类型参数来确保安全性和性能,并猜测您的实际SQL数据类型和列长度,您应该将其更改为实际定义。
private void SaveToDatabase()
{
using (SqlConnection conn = new SqlConnection(_connectionString_Bluebook))
{
conn.Open();
string sql = @"update dbo.Companies
set CompanyName=@CompanyName, AccountNo=@AccountNo
where AccountNo=@OriginalAccountNo;
IF @@ROWCOUNT = 0 RAISERROR('Account number %s not found',16,1,@OriginalAccountNo)";
using (SqlCommand command = new SqlCommand(sql, conn))
{
command.Parameters.Add(new SqlParameter("@CompanyName",SqlDbType.VarChar,100).Value = TextBox_CompanyName.Text;
command.Parameters.Add(new SqlParameter("@AccountNo", SqlDbType.Char, 10).Value = TextBox_Account.Text;
command.Parameters.Add(new SqlParameter("@OriginalAccountNo", SqlDbType.Char, 10).Value = _accountNo;
command.ExecuteNonQuery();
}
}
}
如果行仍未按预期更新,请确保_accountNo
包含正确的值。
修改强>
我在SQL批处理中添加了一个RAISERROR
语句来实现这一点,如果找不到条件,你可以留在代码中。
答案 1 :(得分:-1)
如果SQL Params不起作用,请尝试这种方式:
comm = new SqlCommand("update student_detail set s_name= '" + txtname.Text + "', age= "+txtage.Text+" , course=' " + txtcourse.Text + "' where roll_no = " + txtrn.Text + " ", conn);