我正在尝试更新关于按钮的一组数据。 我有一个用户名,出生日期, 使用CurrentEmailAddress,NewEmailAdrress,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();
答案 0 :(得分:3)
听听这个问题中的评论 - 除了没有真正为你工作之外,你正在做的事情非常危险,并且对于SQL注入攻击来说已经成熟。 Google为“sql注入c#”并实施解决方案 - 本文看起来不错:
http://www.codeproject.com/KB/database/SqlInjectionAttacks.aspx
一旦你解决了这个问题,你可能会遇到某种简单的代码错误,这会阻止你的代码工作,因为你的方法(除了漏洞)看起来并不太糟糕。
在方法的顶部粘贴断点,并完成该方法,确保正在按预期构建sql字符串。
希望有所帮助!
答案 1 :(得分:0)
要检查空字符串,请使用
!string.IsNullOrWhiteSpace(txtNewPassword.Text)
而不是
txtNewPassword.Text != " "
由于 Ashwani