C# 选择顶行Asp.net

C# 选择顶行Asp.net,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我制作了一个asp应用程序,允许用户在数据库中搜索记录。我改变了这一点,允许用户在每次按下搜索按钮时只搜索一行。但是我的代码没有真正起作用! 类别产品: public DataTable SelectRow() { string sql = "SELECT TOP 1 * FROM Products ORDER BY ProductID ASEC"; return SelectRow(sql); } public DataTable SelectRow(strin

我制作了一个asp应用程序,允许用户在数据库中搜索记录。我改变了这一点,允许用户在每次按下搜索按钮时只搜索一行。但是我的代码没有真正起作用! 类别产品:

   public DataTable SelectRow()
   {
  string sql = "SELECT TOP 1 * FROM Products ORDER BY ProductID ASEC";
  return SelectRow(sql);
   }
   public DataTable SelectRow(string Query)
   {
  try
  {
      return db.RunQuery(Query);
  }
  catch
  {
      return new DataTable();
  }
按钮搜索:

    protected void btnSearch_Click(object sender, EventArgs e)
     {
        grid.DataSource = product.SelectRow();
        DataBind();
        lblMsg.Text = "";
        btnRemove.Enabled = false;
        btnUpdate.Enabled = false;
        grid.SelectedIndex = -1;

        }

请你修改一下我的代码,让我一次搜索一条记录好吗。谢谢。

您的SQL是无效的,您的异常处理正在吞咽将显示这一点的异常

没有所谓的ASEC——is应该是ASC:

string sql = "SELECT TOP 1 * FROM Products ORDER BY ProductID ASC";
因为您有一个
try
,而没有任何类型的实际后果(一个非常糟糕的做法),例如重试或一些日志记录,所以实际的异常会被忽略。您正在运行catch块,该块返回一个空的
DataTable

不要那样做。彻底摆脱
try
块-让异常冒泡出来。如果你一开始就这样做,你几乎会立刻发现问题


不要将异常处理用作流控制机制-这是一种糟糕的做法。

为什么
SelectRow()
方法返回布尔值?它不应该返回实际的行吗?您使用的是什么数据库?@Loay关于返回
bool
?@Loay还有,您说您的代码不起作用,但我们需要确切知道代码在做什么来帮助您。是的,我在DataTable中创建了,但仍然没有返回任何!看看上面的代码,它工作得很好!非常感谢你的贡献,我非常感谢。关于使用try-catch,您有一个观点!我认为这是一种很好的机制,可以在发现异常时及时发现异常。我同意你的说法,你提到这是一种不好的做法,但在某些情况下,这有点得心应手。但这是一个非常罕见的场合。默认情况下,最好不要这样做。