c#更新数据库问题

时间:2011-06-28 07:05:02

标签: c# mysql

我正在尝试更新关于按钮的一组数据。 我有一个用户名,出生日期, 使用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();

2 个答案:

答案 0 :(得分:3)

听听这个问题中的评论 - 除了没有真正为你工作之外,你正在做的事情非常危险,并且对于SQL注入攻击来说已经成熟。 Google为“sql注入c#”并实施解决方案 - 本文看起来不错:

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

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

在方法的顶部粘贴断点,并完成该方法,确保正在按预期构建sql字符串。

希望有所帮助!

答案 1 :(得分:0)

要检查空字符串,请使用

!string.IsNullOrWhiteSpace(txtNewPassword.Text)

而不是

txtNewPassword.Text != " "

由于 Ashwani