{
}
protected void Button1_Click(object sender, EventArgs e)
{
using (SqlConnection mycon = new SqlConnection("Data source=(local);Initial Catalog=CourseWebsite;Integrated Security=True"))
{
mycon.Open();
string password;
password = TextBox2.Text.Trim();
string mail;
mail = Request["remail"];
SqlCommand cmd = new SqlCommand("update userinfo set password='" + password + "' where mail=@mail", mycon);
cmd.Parameters.Add(new SqlParameter("@mail", mail));
cmd.ExecuteNonQuery();
Response.Redirect("密码修改成功.aspx");
}
}
15 个解决方案
#1
可以看一下mail字段的类型是nvarchar还是varchar,再去看下它的数据,可能最后面还是最前面有N个空格.
#2
不是这个问题
#3
那你试下用拼接字符串的形式写SQL语句,看下是不是参数的问题.,打上断点,再查看SQL语句,把SQL语句拿到SQL中运行看.
#4
没有
protected void Page_Load(object sender, EventArgs e)
{
//在这里面要写个,获取数据.能读取到你要修改的数据
if(!IsPostBack)
{
InitModel(); //这个是获取数据的代码
}
}
public Void InitModel()
{
int id=int.Parse(Request.QueryString["id"]); //这里面的id 是你前台传过的id
//然后给每个控件赋值 把数据库的值取到在控件里面显示
}
#5
只要在数据库里显示更新后的数据 不用显示到控件上
#6
你的条件没找到,就是说mail=‘’ 数据库没有这个可能是,你打断电调试,看看sql语句具体是什么,然后直接拿sql语句去执行看看能不能成功
,或者是不是你的页面没有刷新
,或者是不是你的页面没有刷新
#7
你先用字符串拼接的方式..看sql语句是否正确..
再选择使用参数的方式 执行sql..
确保sql语句正确性.
#8
(local) 换 . 试试
#9
你看看执行后,改变了几条记录 0条的话就是你语句出问题了。
#10
这种问题都是粗心大意导致的, 楼主自己多检查检查.每个变量的值是否是你以为的那个值.
另外,明明 @mail 用传参数的, password 却不传, 这是故意留的漏洞吗?
另外,明明 @mail 用传参数的, password 却不传, 这是故意留的漏洞吗?
#11
int rows=cmd.ExecuteNonQuery();
看返回值到底是啥
看返回值到底是啥
#12
拼接字符串容易出问题的,遇到这样的问题,我基本上是打个断点,然后把得到的语句,放到数据库里边去测试下,看看是否正确!
#13
打断点调试一下,在检查你类库里面的数据成员和你数据库里面是不是对应的!还有楼上说的看看你的参数的类型是不是对应的!
#14
来看看。学习一下,以前我也遇到过。
#15
password='" + password 也用参数,怎么又是拼字符串又是参数化,统一下 ,为了规范再加上这句cmd.CommandType=CommandType.Text 还有建议楼主不要中文命名
#1
可以看一下mail字段的类型是nvarchar还是varchar,再去看下它的数据,可能最后面还是最前面有N个空格.
#2
不是这个问题
#3
那你试下用拼接字符串的形式写SQL语句,看下是不是参数的问题.,打上断点,再查看SQL语句,把SQL语句拿到SQL中运行看.
#4
没有
protected void Page_Load(object sender, EventArgs e)
{
//在这里面要写个,获取数据.能读取到你要修改的数据
if(!IsPostBack)
{
InitModel(); //这个是获取数据的代码
}
}
public Void InitModel()
{
int id=int.Parse(Request.QueryString["id"]); //这里面的id 是你前台传过的id
//然后给每个控件赋值 把数据库的值取到在控件里面显示
}
#5
只要在数据库里显示更新后的数据 不用显示到控件上
#6
你的条件没找到,就是说mail=‘’ 数据库没有这个可能是,你打断电调试,看看sql语句具体是什么,然后直接拿sql语句去执行看看能不能成功
,或者是不是你的页面没有刷新
,或者是不是你的页面没有刷新
#7
你先用字符串拼接的方式..看sql语句是否正确..
再选择使用参数的方式 执行sql..
确保sql语句正确性.
#8
(local) 换 . 试试
#9
你看看执行后,改变了几条记录 0条的话就是你语句出问题了。
#10
这种问题都是粗心大意导致的, 楼主自己多检查检查.每个变量的值是否是你以为的那个值.
另外,明明 @mail 用传参数的, password 却不传, 这是故意留的漏洞吗?
另外,明明 @mail 用传参数的, password 却不传, 这是故意留的漏洞吗?
#11
int rows=cmd.ExecuteNonQuery();
看返回值到底是啥
看返回值到底是啥
#12
拼接字符串容易出问题的,遇到这样的问题,我基本上是打个断点,然后把得到的语句,放到数据库里边去测试下,看看是否正确!
#13
打断点调试一下,在检查你类库里面的数据成员和你数据库里面是不是对应的!还有楼上说的看看你的参数的类型是不是对应的!
#14
来看看。学习一下,以前我也遇到过。
#15
password='" + password 也用参数,怎么又是拼字符串又是参数化,统一下 ,为了规范再加上这句cmd.CommandType=CommandType.Text 还有建议楼主不要中文命名