这个问题在这里已有答案:
我收到一个错误,即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服务器版本对应的手册,以获得正确的语法 在''标签'附近使用WHERE'UHFRFID'='标签13 00000'限制1'在第1行'
更换
MySqlcmd.CommandText = $"SELECT * FROM 'Tags' WHERE 'UHFRFID'=\"'{Rfid}'\" LIMIT 1;";
同
MySqlcmd.CommandText = $"SELECT * FROM `Tags` WHERE `UHFRFID`=\"'{Rfid}'\" LIMIT 1;";
Tags
和UHFRFID
是表/列名,而不是字符串值。
你必须使用反引号qazxsw poi而不是单引号qazxsw poi