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

本文关键字:语法 错误 数据 MySql 获取 | 更新日期: 2023-09-27 18:02:15

所以我试图从数据库中获取一个值,使用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'列是to类型。

谢谢!

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

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

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

正如其他人所说,table是MySQL中的保留字。你需要使用引号,比如

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

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

也使用using语句来处理您的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();
}

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

如果你想得到你的查询结果,你可以使用ExecuteReader方法,它返回SqlDataReader作为你的结果行。