我收到此sql错误,位置没有行 - 1。
这就是我所做的。
@Qualifier
我想在导航时只显示那些记录,其OrderID等于数据库中的订单ID。
答案 0 :(得分:0)
我认为你的错误发生在这一行
TxtBox_OrderID.Text = dt.Rows[index][0].ToString();
这不是SQL错误,而是一个超出数组范围的简单索引
出于某些原因,当您尝试使用未包含在数据表的Rows集合中的行时,您会收到此错误消息,而不是不太模糊的IndexOutOfRangeException。如果为索引变量传递一个小于零或大于数据表dt中行数的值,则会出现此消息。
您没有检查查询返回的行数,因此您的查询可能无法返回任何记录或简单的索引值为-1
void showData(int index)
{
Connection con = new OrderManager.Connection();
SqlDataAdapter sda = new SqlDataAdapter(".......", con.ActiveCon());
dt = new DataTable();
sda.Fill(dt);
// Protect the access to the rows collection of the table...
if(index < dt.RowsCount && index >= 0)
{
TxtBox_OrderID.Text = dt.Rows[index][0].ToString();
// the code that fills the datagrid
}
else
{
// Message for your user about a record not found
}
}
作为附注,请尽快遵循parameterize your query给出的建议。您将避免Sql Injection并解决问题