我有一个函数,应该采取x2字符串输入并将它们插入到mySQL数据库中。这两个字符串是查询结果,可以是任何东西。测试过程中出现此错误。INSERT错误 - 1064
前{“您的SQL语法错误;检查手册中 对应于你的MySQL服务器版本正确的语法使用 附近是一个很好的开始,但是我可以向你保证它赢得” T为他没有按” 位于第1" 行} {System.Exception的} MySql.Data.MySqlClient.MySqlException
一些想法我来了以后,它的错误,因为我的一个字符串包含撇号结论'字符,并与mySQL语法混淆。我可以对我的字符串做些什么,以确保它们可以像所有字符一样插入到我的表中?
我试过使用AddWithValue()函数进行字符串操作&,但目前为止都没有工作。我认为使用Replace函数会有帮助,但我很喜欢什么是我希望输出的正确的mySQL语法。
任何想法/建议赞赏。谢谢。
public void Insert(string SearchQuery, string QueryResult)
{
const string connString = "SERVER=localhost; DATABASE=social_db; UID=root; PASSWORD=pass;";
MySqlConnection connection = new MySqlConnection(connString);
MySqlCommand command = connection.CreateCommand();
QueryResult = QueryResult.Replace("'", "\'");
command.CommandText =
"INSERT INTO social_tbl (SearchQuery, QueryResult)"
+ " VALUES "
+ "('" + SearchQuery + "', '" + QueryResult + "');";
//command.CommandText =
//"INSERT INTO social_tbl (SearchQuery, QueryResult) VALUES ('@SearchQuery', '@QueryResult');";
//command.Parameters.AddWithValue("@SearchQuery", SearchQuery);
//command.Parameters.AddWithValue("@QueryResult", QueryResult);
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
这有助于消除我的错误,但是这会将NULL值插入到我的数据表中。 SearchQuery&QueryResult的DataType只是Text,如果我传递的字符串太大,我该怎么做/在这里使用? – Draznar
@Draznar你应该总是检查传入的数据,如果它太大,你可以抛出一个异常和/或更改数据库列的宽度和/或根据您的要求适当缩短参数... – Yahia
@Draznar please don'吨忘记upvote和/或“标记为接受”任何答案是有帮助的... – Yahia