我需要通過C#將文本插入到MySQL表中。 dbConnect
是我自己創建的適配器,而ProcessNonQuery
只需要一個字符串。創建「安全」的MySQL字符串(轉義雙引號)
我無法插入包含字符"
和'
的文字。
這是我的嘗試:
public void InsertArticle(string name, string title, string keywords, string desc, string content, int idCategory,bool featured)// int level, int typeArt
{
this.dbConnect.ProcessNonQuery(" set global sql_mode=\"NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"");
string strFeatured;
if (featured)
strFeatured = "1";
else
strFeatured = "0";
content = content.Replace("'", "\'");
StringBuilder sbInsertArticle = new StringBuilder("INSERT INTO Article(NameArt, TitleArt, keywordsArt, DescArt, ContentArt, idCategory, idLevel, idTypeArt, Featured) VALUES('");
sbInsertArticle.Append(name); sbInsertArticle.Append("', '");
sbInsertArticle.Append(title); sbInsertArticle.Append("', '");
sbInsertArticle.Append(keywords); sbInsertArticle.Append("', '");
sbInsertArticle.Append(desc); sbInsertArticle.Append("', '");
sbInsertArticle.Append(content); sbInsertArticle.Append("', '");
sbInsertArticle.Append(idCategory.ToString()); sbInsertArticle.Append("', '");
sbInsertArticle.Append(1); sbInsertArticle.Append("', '");
sbInsertArticle.Append(1); sbInsertArticle.Append("', '");
sbInsertArticle.Append(strFeatured); sbInsertArticle.Append("')");
string strInsertArticle = sbInsertArticle.ToString();
this.dbConnect.ProcessNonQuery(strInsertArticle);
}
使用佔位符/參數。那麼就沒有「那些人物」的問題。 [Bobby Tables]給出了簡單的例子(http://bobby-tables.com/csharp.html)。使用適當的ADO/.NET文檔給出了更多的例子。還有許多重複的「問題」。 – 2012-12-20 17:54:24
嘗試http://stackoverflow.com/questions/6745393/how-to-add-like-special-characters-in-mysql-varchar-data-type-column – sajanyamaha
有辦法做你需要使用轉義。但是,請聽@pst和_use參數化_。你會很高興你在路上...... – PinnyM