简体   繁体   中英

Incorrect syntax near the keyword 'Order' - Order is table name

List<Order> results = new List<Order>();

db.Cmd = db.Conn.CreateCommand();
db.Cmd.CommandText = "SELECT * FROM Order";
db.Rdr = db.Cmd.ExecuteReader();

while (db.Rdr.Read())
{
        results.Add(getOrderFromReader(db.Rdr));
}

db.Rdr.Close();
return results;

I get this error when this code runs

System.Data.SqlClient.SqlException: 'Incorrect syntax near the keyword 'Order'.'

The result is a list of Order objects. The name of the table is Order exactly. The method getOrderFromReader just takes a row of data from the order table and in puts it into a new order object. I have used this format of code to extract data from all of the tables in the database and the rest works fine but its just the Order table that I get this error for, I don't know if this is because of other settings in the database.

You will need to put the name of the table in square brackets in order for it to work.

List<Order> results = new List<Order>();
db.Cmd = db.Conn.CreateCommand();
db.Cmd.CommandText = "SELECT * FROM [Order]";
db.Rdr = db.Cmd.ExecuteReader();
while (db.Rdr.Read())
{
        results.Add(getOrderFromReader(db.Rdr));
}
db.Rdr.Close();
return results;

Order is a SQL reserved word, so you might think about renaming that table, if you can.

Order is a keyword in SQL used for Ordering/sorting of the resultset. Here the complier is getting confused with the keyword and your table name.

Solutions :

  • Rename your table name

  • Enclose your table name in brackets. [Order]. ie, Select * From [Order]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM