c更新数据库的问题
本文关键字:问题 数据库 更新 | 更新日期: 2023-09-27 18:00:37
我正在尝试更新ButtonClick上的一组数据。我有用户名,出生日期,带有CurrentEmailAddress、NewEmailAdress、ConfirmNewEmailAddress
我试着一次点击就能更新所有内容。我可以更新用户名,但无法更新出生日期和电子邮件地址。
下面是我的c#代码:请注意,myDBmanager将执行更新,没有问题
//SQL query
string updateSQL = "UPDATE user_profile,user_login SET ";
updateSQL += "user_profile.user_name = '" + txtUserName.Text + "', ";
updateSQL += "user_profile.user_dob = '" + txtDateOfBirth.Text + "'";
if (txtNewPassword.Text != " " && txtNewEmailAddress.Text == " ")
{
updateSQL += ", user_login.user_passw = '" + txtNewPassword.Text + "'";
}
else if (txtNewPassword.Text == " " && txtNewEmailAddress.Text != " ")
{
updateSQL += ", user_profile.user_email = '" + txtNewEmailAddress.Text + "'";
}
else if (txtNewPassword.Text != " " && txtNewEmailAddress.Text != " ")
{
updateSQL += ", user_login.user_passw = '" + txtNewPassword.Text + "',";
updateSQL += "user_profile.user_email = '" + txtNewEmailAddress.Text + "'";
}
else { }
updateSQL += " WHERE user_profile.user_profile_id = 1 ";
updateSQL += " AND user_login.user_profile_id = 1 ;";
updateSQL += Global.myDBManager.GetNewIndex();
int update = Global.myDBManager.ExecuteSql(updateSQL);
//Close connection
Global.myDBManager.Disconnect();
听一下这个问题中的评论-你正在做的事情,除了实际上不适合你之外,是非常危险的,而且对SQL注入攻击来说已经成熟了。谷歌为"sql注入c#"并实现了一个解决方案-这篇文章看起来不错:
http://www.codeproject.com/KB/database/SqlInjectionAttacks.aspx
一旦你修复了这个问题,你可能会遇到某种简单的代码错误,阻止你的代码工作,因为你的方法(除了漏洞)看起来并不太糟糕。
在方法的顶部粘贴一个断点,然后遍历该方法,确保sql字符串按预期构建。
希望能有所帮助!
要检查空字符串,请使用
!string.IsNullOrWhiteSpace(txtNewPassword.Text)
而不是
txtNewPassword.Text != " "
谢谢Ashwani