更新语句不会更改

时间:2013-12-23 22:45:00

标签: c# asp.net

我有这个连接到我的数据库的类:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for Dcon
/// </summary>
public class Dcon
{
    public SqlConnection con;
    private SqlCommand cmd = new SqlCommand();
    public SqlDataReader dr;

    public Dcon()
    {
        con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=E:\web\WebSite4\App_Data\Dbase.mdf;Integrated Security=True");
        con.Open();
        cmd.Connection = con;
    }

    public bool IUD(string sqls)
    {
        try
        {
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sqls;
            cmd.ExecuteNonQuery();
            con.Close();
            return true;
        }
        catch
        {
            return false;
        }
    }

    public bool select(string sqls)
    {
        cmd.CommandText = sqls;
        dr = cmd.ExecuteReader();
        if(dr.Read())
            return true;
        return false;
    }

}

以及使我的数据库更新的代码

if (s1.IUD("UPDATE users SET fname=N'" + TextBox1.Text + "',lname=N'" + TextBox2.Text + "',uname='" + TextBox3.Text + "',password='" + pass + "' WHERE (id=" + Request.QueryString["id"]+")"))
{
    Response.Redirect("success.aspx");
}
else
{
    Response.Redirect("faild.aspx");
}

它进入成功页面,但它没有改变我的数据,我的代码工作在插入和选择staments但我不知道为什么它不工作当我使用更新的声明,可以任何人帮助?!

1 个答案:

答案 0 :(得分:1)

这里要考虑多个事项。
首先,最重要的是使用variable并检查它返回的内容,以检查受此影响​​的# of rows

int rows = cmd.ExecuteNonQuery();

如果是0那么您的查询肯定有问题,或者没有符合您所选条件的记录,除了这两项记录之外别无其他任何事情。

注意:您的代码有几个问题

  • 参数化查询应该用于避免 SQL注入
  • 在使用后弃用对象
  • QueryString 可以为null,请像这样检查

    If(Request.QueryString["id"] != null)
    {
       // your update code here
    }