试图从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类型。谢谢!
将您的字段名称table
放在反引号中(table
是MySQL中的保留字):
query = "SELECT * FROM `tables` WHERE `table` = @tafel";
正如其他人所说,table
是MySQL中的保留字。你需要使用引号,比如
query = "SELECT * FROM tables WHERE `table` = @tafel";
但是,最好的解决方案是将名称更改为非保留字。
也使用using
语句来处理您的MySqlConnection
和MySqlCommand
;
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
作为你的结果行。