asp.net - 更新网站中的用户资料
问题描述
在我由 asp.net 制作的网站中,如果旧密码正确,我们可以更新用户的电子邮件地址、密码、地点和个人信息。现在我要做的是登录,然后使用此代码进行更新:
protected void update_profile(object sender, EventArgs e)
{
string constr = ConfigurationManager.ConnectionStrings["Khulna_website"].ConnectionString;
using (SqlConnection connection = new SqlConnection(constr))
{
string user_email = (string)(Session["User"]);
string pass = encrypt_pass(old_password.Text);
if (pass != (string)(Session["Password"]))
{
pass_err_message.Text = "Wrong password";
pass = (string)Session["Password"];
}
else
{
pass = encrypt_pass(new_password.Text);
}
string insertQuery = "update dbo.users set user_password=@new_password, user_place = @new_place, user_about=@new_about where user_email =" +user_email;
SqlCommand com = new SqlCommand(insertQuery, connection);
connection.Open();
com.Parameters.AddWithValue("@new_password", pass);
com.Parameters.AddWithValue("@new_about", new_about.Text);
com.Parameters.AddWithValue("@new_place", new_place.Text);
try
{
com.ExecuteNonQuery();
upload_err_message.Text = "Successfully uploaded";
connection.Close();
}
catch (Exception ex)
{
profile_settings_err_message.Text = "Update error: " + ex.Message;
}
}
}
但是当我尝试更新时它说:更新错误:无法绑定多部分标识符“abcde@gmail.com”。我的会话消失了!我想可能是由于外键,所以我删除了数据库的所有外键,但它仍然在发生。这里有什么问题?
编辑:我已经添加了外键,因为我需要它们来删除级联。我只是删除了它们,看看它是否有效。
解决方案
我只是猜测,但我相信您的问题会在这里找到:
"... user_email =" +user_email;
尝试做类似的事情
"... user_email = @email";
com.Parameters.AddWithValue("@email", user_email);
这是更好的方法......但是,如果您想变得懒散,您应该能够将电子邮件用单引号括起来。
"... user_email = '" + user_email + "'";
我希望这有帮助!
推荐阅读
- java - 直径堆栈重新启动时如何处理请求/应答/会话?
- common-lisp - 如何加载和使用 quicklisp 程序
- mysql - 用户 '' 的访问被拒绝(使用密码:否),但它确实有密码
- amazon-web-services - 如何使用带有 PySpark 的 WHERE 子句在 AWS Glue 中查询 JDBC 数据库?
- nativescript - NativeScript 在 app.module 中导入 NGXS 模块在日志控制台中引发错误
- python - 如何替换数组中的最小值?
- angularjs - 祖鲁时间的 OrderBy 过滤器未按预期工作
- java - 从物料清单创建类结构的最佳方法是什么?
- android - RecyclerView 没有显示我的预期输出
- java - 如何让我的应用程序使用 Java WebStart 运行