尝试从MySql获取数据时出现语法错误

时间:2014-05-08 11:02:47

标签: c# mysql sql select where

所以我试图从数据库中获取一个值,使用WHERE INT选择行。

conn = new MySqlConnection(DBdetails.connStr);
conn.Open();
query = "SELECT * FROM tables WHERE table=@tafel";
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.Parameters.AddWithValue("@tafel", tafel);
cmd.ExecuteNonQuery();

然而它不会传递'cmd.ExecuteNonQuery()',它会抛出一个错误,说法语不正确:“near table = 1”,“near table = 2”

我尝试在同一个表中获取另一个var char并且它工作得很好。

不要真的看到我做错了什么。 'table'列是一个int,'tafel'是一个int to。

谢谢!

2 个答案:

答案 0 :(得分:0)

将您的字段名称table放在反引号中(table MySQL 中的保留字):

 query = "SELECT * FROM `tables` WHERE `table` = @tafel";

答案 1 :(得分:0)

正如其他人所说,table在MySQL中是reserved word。你需要使用它的引用,如

query = "SELECT * FROM tables WHERE `table` = @tafel";

但是,最佳解决方案是将名称更改为非保留字。

同时使用using statement来处理您的MySqlConnectionMySqlCommand之类的内容;

using(MySqlConnection conn = new MySqlConnection(DBdetails.connStr))
using(MySqlCommand cmd = conn.CreateCommand())
{
    cmd.CommandText = "SELECT * FROM tables WHERE `table` = @tafel";
    cmd.Parameters.AddWithValue("@tafel", tafel);
    conn.Open();
    cmd.ExecuteNonQuery();
}

顺便说一句,我不明白为什么你使用ExecuteNonQuery SELECT语句。它只是执行您的查询。它甚至不会返回任何值。

如果您想获得查询结果,可以使用ExecuteReader方法返回SqlDataReader作为结果行。

相关问题