C#,sql中的update语句
根据我从textbox1、textbox2获得的输入,我想用DB检查给定的用户名和密码组合是否可用,然后我想用textbox3中可用的输入更新密码。以下是我的代码,但我的更新语句似乎工作不正常,请帮助我更正它C#,sql中的update语句,c#,mysql,C#,Mysql,根据我从textbox1、textbox2获得的输入,我想用DB检查给定的用户名和密码组合是否可用,然后我想用textbox3中可用的输入更新密码。以下是我的代码,但我的更新语句似乎工作不正常,请帮助我更正它 protected void Button1_Click(object sender, EventArgs e) { MySqlConnection connection = new MySqlConnection("server=localhost; d
protected void Button1_Click(object sender, EventArgs e)
{
MySqlConnection connection = new MySqlConnection("server=localhost; database=e-learningsystem; uid=root; password=123;port=3307;");
connection.Open();
try
{
MySqlCommand cmd1 = new MySqlCommand("UPDATE lecturer Set Password= '" + TextBox3.Text + "' WHERE UserName='" + TextBox1.Text + "' AND Password='" + TextBox2.Text + "'", connection);
cmd1.ExecuteNonQuery();
if (cmd1.ExecuteNonQuery() > 0)
{
Response.Write(@"<script language='javascript'>alert('Your Password Has Been Changed successfully!, Congratulations!')</script>");
}
else
{
Response.Write(@"<script language='javascript'>alert('Your Password Has Not Been Changed successfully!, Sorry!')</script>");
}
connection.Close();
}
catch (Exception ex)
{
Response.Write(@"<script language='javascript'>alert(ex.Message)</script>");
}
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
MySqlConnection=newmysqlconnection(“服务器=localhost;数据库=e-learningsystem;uid=root;密码=123;端口=3307;”;
connection.Open();
尝试
{
MySqlCommand cmd1=new MySqlCommand(“更新讲师设置密码=”+TextBox3.Text+”,其中用户名=”+TextBox1.Text+”,密码=”+TextBox2.Text+”,连接);
cmd1.ExecuteOnQuery();
如果(cmd1.ExecuteNonQuery()>0)
{
响应。写(@“警报('您的密码已成功更改,恭喜!”);
}
其他的
{
响应。写入(@“警报('您的密码未成功更改!对不起!'));
}
connection.Close();
}
捕获(例外情况除外)
{
响应。写入(@“警报(例如消息)”);
}
}
您试图通过调用ExecuteNonQuery
两次来更新密码。在第一次调用ExecuteNonQuery
时,它将返回未收集的1
,第二次调用ExecuteNonQuery
时,它将返回0
,因此它将始终执行else
部分
进行以下更改-
int updateCount = cmd1.ExecuteNonQuery();
if (updateCount > 0)
{
Response.Write(@"<script language='javascript'>alert('Your Password Has Been Changed successfully!, Congratulations!')</script>");
}
else
{
Response.Write(@"<script language='javascript'>alert('Your Password Has Not Been Changed successfully!, Sorry!')</script>");
}
int updateCount=cmd1.ExecuteNonQuery();
如果(更新计数>0)
{
响应。写(@“警报('您的密码已成功更改,恭喜!”);
}
其他的
{
响应。写入(@“警报('您的密码未成功更改!对不起!'));
}
Eugh。“Sql注入”,去谷歌看看,真的。您的系统有风险。现在,我可以用更改密码来破坏你的数据库。然后去阅读有关纯文本密码存储的内容。你不应该储存密码。你甚至不应该加密它们。你应该对密码应用一个salt散列(最好是每个用户的salt),并且只存储散列。现在:回到原来的问题:你说的“不能正常工作”是什么意思?会发生什么?还是没有?嘿,因为你的代码提到了“e-learningsystem”,这使得Bobby表特别令人痛心:更新后的值没有发送到DBNo,只有一条“ExecuteOnQuery”语句。。。你为什么告诉我那里太多了???我无法理解它@ParagMeshram@Jiya第一个是cmd1.ExecuteNonQuery()第二个是if(cmd1.ExecuteNonQuery()>0)
。它将运行update语句两次。@Jiya它将执行您的update
语句两次。对于相同的测试,请尝试使用INSERT
语句替换update。它将插入两条记录。