解析查询时出错

时间:2013-10-31 07:13:14

标签: c# wpf sql-server-ce

我收到错误,这是什么问题?

SqlCeCommand com5 = new SqlCeCommand("SELECT MAX(OrderID) AS Expr1 FROM Order_Details)", con);
SqlCeDataReader dr5 = com5.ExecuteReader(); // Catches Ex here
while (dr5.Read())
{
     orderID = Convert.ToInt32(dr[0]);
}

我将SQLCeVS2012WPFC#一起使用。

例外是

  

$ exception {“解析查询时出错。[令牌行号= 1,令牌行偏移= 62,令牌错误=)]”}        System.Exception {System.Data.SqlServerCe.SqlCeException}`

查询正确,但这些查询不会更新我的数据库,你能不能查看它。

SqlCeCommand com3 = new SqlCeCommand("INSERT INTO Order_Details(Discount, TotalPrice, TotalTax) VALUES(@Discount, @TotalPrice, @TotalTax)", con);
                com3.Parameters.AddWithValue("@Discount", discount);
                com3.Parameters.AddWithValue("@TotalPrice", gTotal);
                com3.Parameters.AddWithValue("@TotalTax", totalIndividualTax);

3 个答案:

答案 0 :(得分:2)

删除最后的)

SELECT MAX(OrderID) AS Expr1 FROM Order_Details)
                                               ^--here

答案 1 :(得分:1)

)部分之后您有一个额外的括号FROM Order_Details。只需删除它。

将其更改为;

SqlCeCommand com5 = new SqlCeCommand("SELECT MAX(OrderID) AS Expr1 FROM Order_Details", con);
SqlCeDataReader dr5 = com5.ExecuteReader(); // Catches Ex here
while (dr5.Read())
{
     orderID = Convert.ToInt32(dr[0]);
}

顺便说一下,我不明白为什么你在这里使用ExecuteReader。由于您只返回一行一列,因此使用ExecuteScalar会更好。

例如;

SqlCeCommand com5 = new SqlCeCommand("SELECT MAX(OrderID) AS Expr1 FROM Order_Details", con);
orderID = (int)com5.ExecuteScalar(); 

答案 2 :(得分:1)

在此处删除括号:

SqlCeCommand com5 = new SqlCeCommand("SELECT... Order_Details)", con);
                                                             ^