我在將數據輸入到數據庫時遇到問題。我看過其他文章,關於如何通過轉義來傳遞變量,但這些解決方案不適用,因爲我通過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