所以我试图从数据库中获取一个值,使用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。
谢谢!
答案 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来处理您的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
作为结果行。