mysql查询宽度的语法错误选择和限制

时间:2018-03-05 10:57:25

标签: c# mysql mysql-error-1064

我收到一个错误,即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行'

1 个答案:

答案 0 :(得分:1)

替换

MySqlcmd.CommandText = $"SELECT * FROM 'Tags' WHERE 'UHFRFID'=\"'{Rfid}'\"    LIMIT 1;";

MySqlcmd.CommandText = $"SELECT * FROM `Tags` WHERE `UHFRFID`=\"'{Rfid}'\"    LIMIT 1;";

TagsUHFRFID是表/列名,而不是字符串值。

您必须使用返回刻度`而不是单引号'