更新查询在ASP.NET Web应用程序中不起作用

时间:2013-11-24 10:41:24

标签: asp.net sql-server

using System.Data.SqlClient;
using System.Data.Sql;

public partial class _Default : System.Web.UI.Page 
{


 SqlConnection con = new SqlConnection(@"Data Source=GAGAN-PC\SQLEXPRESS;Initial Catalog=update_test;Integrated Security=True");
    SqlCommand cmd;
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void delete_button_Click(object sender, EventArgs e)
    {
        con.Open();
        cmd = new SqlCommand("delete from update_delete where id like'"+TextBox1.Text+"'",con);
        cmd.ExecuteNonQuery();
        Response.Write("Control reached.");
        con.Close();
        Response.Write("Data successfully deleted.");
    }
    protected void update_button_Click(object sender, EventArgs e)
    {
        con.Open();
        cmd = new SqlCommand("update update_delete set password ='"+TextBox3.Text+"' where id like'"+TextBox2+"'", con);
        cmd.ExecuteNonQuery();
        Response.Write("Control reached.");
        con.Close();
        Response.Write("Data successfully Updated.");
    }
}

我正在尝试实现更新查询,但它有一点问题。我使用SQL Server作为数据库,而update_delete是一个表,其中有3列id,sname,password,我正在尝试更新关于id的密码。

问题是当我点击更新按钮控件到达cmd.ExecuteNonQuery();时,没有显示错误。但是没有进行更新。我该怎么办。请请帮帮我。提前致谢。 :):)

2 个答案:

答案 0 :(得分:2)

我只是猜测 - 如果Id是数字数据类型,那么就不能使用LIKE

另外:请使用using()...块来确保正确处理并使用参数化查询以避免SQL注入攻击。

像这样编写UPDATE命令:

protected void update_button_Click(object sender, EventArgs e)
{
    // get the values to use
    string idValue = Convert.ToInt32(TextBox3.Text.Trim());
    string password = TextBox2.Text.Trim();

    // define the query text with *parameters* !
    string updateQuery = "update update_delete set password = @password where id = @ID";

    // put things like SqlConnection and SqlCommand into "using()...." blocks
    using (SqlCommand updCmd = new SqlCommand(updateQuery, con))
    {
        // define parameters and their values
        updCmd.Parameters.Add("@password", SqlDbType.VarChar, 50).Value = password;
        updCmd.Parameters.Add("@ID", SqlDbType.Int).Value = idValue;

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

        Response.Write("Data successfully Updated.");
    }
}

答案 1 :(得分:1)

我想你得到了一个例外。我建议捕获您的异常并告诉我们消息......您可以使用调试器或try-catch子句捕获异常。

如果你没有得到例外,并且"控制已达到"如果显示消息,则必须使用形成的SQL字符串直接在SQL Server中使用它,并查看SQL语句中是否存在错误。我想你以某种方式形成了一个无效的SQL语句(例如使用不存在的ID)。

希望我帮忙!