使用带有Mysql插入语句的变量

时间:2017-04-10 21:25:46

标签: c# mysql

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

我尝试使用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(); } 的用户的ID保存得分,例如得分为4.它将保存单词ID和单词得分而不是数字。

这是我目前的代码:

{{1}}

1 个答案:

答案 0 :(得分:1)

首先,将变量直接放在语句中是一个禁忌,导致一个非常着名的问题叫做 SQL Injection 。 为避免这种情况,我们将更改您的命令以使用参数,稍后将使用变量填充

library(dplyr);library(stringr)

df1 <- data.frame(infecting_agent=c('staphylococcus','bacteria','virus','bacterial'))
df1 %>%
mutate(bacteria=ifelse(str_detect(infecting_agent, 'bact|cocc|staph'),1,0),
       virus=ifelse(str_detect(infecting_agent, 'vir|cocc'),1,0)
       )

  infecting_agent bacteria virus
1  staphylococcus        1     1
2        bacteria        1     0
3           virus        0     1
4       bacterial        1     0

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

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

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

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