我在将数据输入到数据库时遇到问题。我看过其他文章,关于如何通过转义来传递变量,但这些解决方案不适用,因为我通过API获取变量。顺便提一下,我使用foreach循环来循环数据。如何通过MySql传递带撇号的C#变量
level = "" + x.Account_Level + "";
name = "" + x.name + "";
command.CommandText = "INSERT INTO `data` (`level`, `name`) VALUES(" + level + ", " + name + ")";
command.ExecuteNonQuery();
有时候,一个变量会返回一个撇号,并将代码搞乱。是否可以在每个撇号之前插入一个斜杠或者是否有像PHP一样的方式将整个变量用单引号括起来?谢谢!
编辑: 这项工作?我想我需要添加i来更改每个循环的参数名称,因为它声明了已声明的参数。
using (var web = new WebClient())
{
web.Encoding = System.Text.Encoding.UTF8;
var jsonString = responseFromServer;
var jss = new JavaScriptSerializer();
var MatchesList = jss.Deserialize<List<Matches>>(jsonString);
string connectString = "Server=myServer;Database=myDB;Uid=myUser;Pwd=myPass;";
MySqlConnection connect = new MySqlConnection(connectString);
MySqlCommand command = connect.CreateCommand();
int i = 1;
connect.Open();
foreach (Matches x in MatchesList)
{
command.CommandText = "INSERT INTO `data` (`level`, `name`) VALUES(?level" + i + ", ?name" + i + ")";
command.Parameters.AddWithValue("level" + i, x.Account_Level);
command.Parameters.AddWithValue("mode" + i, x.name);
command.ExecuteNonQuery();
i++;
}
connect.Close();
}
你真的应该使用SQL参数,你的代码是SQL注入攻击敞开的。作为一个很好的副作用,你也可以这样摆脱你的问题。 – Dirk 2014-08-28 05:34:19
看看ip“c#mysql参数” – 2014-08-28 05:36:35