gpt4 book ai didi

c# - 在 Mysql insert 语句中使用变量

转载 作者:行者123 更新时间:2023-11-29 10:53:40 28 4
gpt4 key购买 nike

我正在尝试将一些数据插入我的 MySql 数据库并已成功建立连接并提交数据,但是我的变量保存为变量的实际名称,而不是我尝试分配的值。我正在使用身份收集我的 asp 系统的登录用户,并从我的主页上的一些单选按钮列表中收集用户的分数。

我尝试保存 ID 为 12345 且分数为 4 的用户的分数。它将保存单词 Id 和单词分数,而不是数字。

这是我当前的代码:

    if (score != 0) ;
{
string Id = User.Identity.GetUserId();
string MyConString = "SERVER=localhost;" +
"DATABASE=synther_physics;" +
"UID=root;" +
"PASSWORD=rootpass;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "INSERT INTO userscores (Id, momentsandenergytestscore) VALUES ('Id','score');";

connection.Open();
Reader = command.ExecuteReader();
connection.Close();


}

最佳答案

首先,将变量直接放置在语句中是禁忌,这会导致一个众所周知的问题,称为SQL 注入(inject)。为了避免这种情况,我们将更改您的命令以使用参数,稍后将使用变量填充

command.CommandText = "INSERT INTO userscores (Id, momentsandenergytestscore) VALUES (@Id,@score);";

然后我们将添加这两行,用您的变量填充参数

command.Parameters.AddWithValue("@Id", Id);
command.Parameters.AddWithValue("@score", score);

由于这不是 SELECT 语句,因此不需要读取器。您可以使用 ExecuteNonQuery 命令,该命令将返回受影响的行数(对于此 INSERT 语句应为 1。

int RowsAffected = command.ExecuteNonQuery();

关于c# - 在 Mysql insert 语句中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43333135/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com