我收到一个错误,即mysql数据库上的查询语法错误。 代码应该检查标签数据库中是否存在字符串{Rfid},如果不创建它。该异常是在第一个MySqlcmd.CommandText中引起的 但是我没有看到它,它们是正常的mysql动词,唯一可能是Rfid可能包含空格的特性,但我不明白为什么会出现问题。
OpenConnection(); //a function to connect, no problems here.
MySqlDataReader reader;
MySqlcmd.CommandText = $"SELECT * FROM 'Tags' WHERE 'UHFRFID'=\"'{Rfid}'\" LIMIT 1;";
reader = MySqlcmd.ExecuteReader(); // >> crashes
//create a new tag in table, if its unknown.
if (!reader.HasRows)
{
try
{
MySqlcmd.CommandText = $"INSERT INTO `Tags` (`TagId`, `UHFRFID`, `Gate1`) VALUES(NULL,\"'{Rfid}'\", NULL);";
MySqlcmd.CommandType = System.Data.CommandType.Text;
MySqlcmd.ExecuteNonQuery();
}
catch
{ }
我得到的MySQL错误是:
MySql.Data.MySqlClient.MySqlException:'您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法
使用附近的'标签'在哪里' UHFRFID' ='标签13 00000'限制1'在第1行'
答案 0 :(得分:1)
替换
MySqlcmd.CommandText = $"SELECT * FROM 'Tags' WHERE 'UHFRFID'=\"'{Rfid}'\" LIMIT 1;";
带
MySqlcmd.CommandText = $"SELECT * FROM `Tags` WHERE `UHFRFID`=\"'{Rfid}'\" LIMIT 1;";
Tags
和UHFRFID
是表/列名,而不是字符串值。
您必须使用返回刻度`
而不是单引号'