C# 选择顶行Asp.net
我制作了一个asp应用程序,允许用户在数据库中搜索记录。我改变了这一点,允许用户在每次按下搜索按钮时只搜索一行。但是我的代码没有真正起作用! 类别产品: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
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,您有一个观点!我认为这是一种很好的机制,可以在发现异常时及时发现异常。我同意你的说法,你提到这是一种不好的做法,但在某些情况下,这有点得心应手。但这是一个非常罕见的场合。默认情况下,最好不要这样做。