【发布时间】:2021-05-21 18:01:09
【问题描述】:
我正在开发一个 asp.net Web 应用程序,我正在尝试向它添加一个用户 xp 系统。我有一个与之连接的 SQL Server 数据库,我正在尝试创建一个函数,该函数将为用户提供 5 个经验点。
我查询了已登录的用户,访问了user_xp 列,并尝试将+5 添加到xp 的旧会话变量,然后将其发送回数据库进行存储。这是我的代码,我不确定它有什么问题。
void generateXp()
{
try
{
SqlConnection con = new SqlConnection(strcon);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlCommand cmd = new SqlCommand("UPDATE member_master_tbl SET user_xp = @user_xp WHERE " +
"user_name = '" + Session["username"].ToString().Trim() + "'", con);
int xp = 5;
int current_xp = Convert.ToInt32(Session["user_xp"]);
int new_xp = xp + current_xp;
string new_xp2 = Convert.ToString(new_xp);
cmd.Parameters.AddWithValue("user_xp", new_xp2);
}
catch (Exception ex)
{
}
}
【问题讨论】:
-
您的代码容易受到 SQL 注入攻击!永远不要从用户输入构造 SQL 语句。改为使用查询参数,
-
你为什么要为
UPDATE的SET部分使用参数-然后切换回WHERE部分的旧的、糟糕的字符串连接?始终使用参数! -
解决参数问题后,您确实需要在某个时候执行查询。
-
为什么要将数字存储为字符串?
-
你从来没有执行过命令...?
标签: c# asp.net sql-server database