无法从ASP.NET Webform更新数据库

时间:2018-01-21 11:01:41

标签: asp.net sql-server webforms sql-update

我无法获得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 ();
    }
}

2 个答案:

答案 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);
  1. 尝试放置调试器并提供编译器的确切错误