【发布时间】:2013-08-23 17:00:14
【问题描述】:
我试图从订单表中显示最近的“订单”。但即使我在表中有一些订单,我也会收到消息“没有订单可获取”。代码有什么问题?
public static List<OrderInfo> GetOrdersByRecent (int count)
{
DbCommand comm = GenericDataAccess.CreateCommand ();
comm.CommandText = "OrdersGetByRecent";
DbParameter param = comm.CreateParameter ();
param.ParameterName = "@Count";
param.Value = count;
param.DbType = DbType.Int32;
comm.Parameters.Add (param);
return ConvertDataTableToOrders (GenericDataAccess.ExecuteSelectCommand (comm));
}
protected void byRecentGo_Click(object sender, EventArgs e)
{
try
{
int recordCount = Int32.Parse(recentCountTextBox.Text);
List<OrderInfo> orders = CommerceLibAccess.GetOrdersByRecent(recordCount);
grid.DataSource = orders;
if (orders.Count == 0)
{
errorLabel.Text = "<br />No orders to get.";
}
}
catch
{
errorLabel.Text = "<br />Couldn't get the requested orders!";
}
finally
{
grid.DataBind();
}
}
【问题讨论】:
-
你的问题很模糊。您是否尝试过调试代码?
-
-1:您必须自己调试 - 除非您提供显示问题的小样本(而不是调用随机私有函数),否则此问题可能会被关闭。
-
CommerceLibAccess.GetOrdersByRecent(recordCount)不返回任何项目。就是这样。我们无法告诉您更多信息,因为我们不知道该功能是如何工作的,也不知道您的数据库的外观。在该行放置一个断点,然后自己遍历代码。 -
以上都是真的,但你的
CommandText属性中的“OrdersGetByRecent”又是什么?那应该是一个存储过程吗?或者你只是省略了 SELECT 字符串。如果您在我遇到过的任何 sql 系统中运行“OrdersGetByRecent”......您将得到一个错误(很可能)或返回一个空集。如果您使用的是存储过程,则需要声明comm.CommandType属性。 -
它是存储过程,我可以在sql查询中运行它。我试过 comm.CommandType = CommandType.StoredProcedure;但结果是一样的。