位置-1处没有行

时间:2017-06-01 18:40:42

标签: c# sql

我收到此sql错误,位置没有行 - 1。

这就是我所做的。

@Qualifier

我想在导航时只显示那些记录,其OrderID等于数据库中的订单ID。

1 个答案:

答案 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并解决问题