【发布时间】:2020-11-03 00:14:40
【问题描述】:
我有一个我想运行的 SQL 查询抛出我的 asp.net (WebForms) 项目 查询是:
SELECT COUNT([order]) FROM menu_orders_Finished
WHERE [order] LIKE '%EXAMPLE%'
我想做的是
con.Close();
con.Open();
cmd = new SqlCommand("select * from menu",con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
Series series = Chart2.Series["Series2"];
while (dr.Read())
{
search = new SqlCommand("SELECT COUNT([order]) FROM menu_orders_Finished WHERE [order] LIKE '%@order@%'", con);
search.Parameters.AddWithValue("@order", dr["name"].ToString());
int count = Convert.ToInt32(search.ExecuteScalar());
Label3.Visible = true;
Label3.Text += count.ToString() + "+";
}
con.Close();
这基本上是在计算我的订单中有多少次我的菜单项(我想制作最畅销餐点的图表)
然后将其添加到图表中(但我将其删除只是为了看看我首先得到了什么)
【问题讨论】:
-
concat('%',@order,'%') 应该可以工作。如果你愿意,你也可以使用 '%' + @order + '%'。但有两个未解决的问题。名字可能是保留字,所以使用 [name],如果 name 为 null 会发生什么?您应该使用检查 null 来包装 if/then 并跳过行搜索。 (或将 [name] is not null 添加到驱动循环的主查询中。所以我不认为 concat() 失败,但 null 值会炸毁它,并且还使用 [name] 代替 name
-
不要使用addwithvalue。养成良好的编码习惯。
标签: asp.net sql-server charts sqlcommand