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();

c更新数据库的问题

听一下这个问题中的评论-你正在做的事情,除了实际上不适合你之外,是非常危险的,而且对SQL注入攻击来说已经成熟了。谷歌为"sql注入c#"并实现了一个解决方案-这篇文章看起来不错:

http://www.codeproject.com/KB/database/SqlInjectionAttacks.aspx

一旦你修复了这个问题,你可能会遇到某种简单的代码错误,阻止你的代码工作,因为你的方法(除了漏洞)看起来并不太糟糕。

在方法的顶部粘贴一个断点,然后遍历该方法,确保sql字符串按预期构建。

希望能有所帮助!

要检查空字符串,请使用

!string.IsNullOrWhiteSpace(txtNewPassword.Text)

而不是

txtNewPassword.Text != " "

谢谢Ashwani