Datarow System.IndexOutOfRangeException

时间:2014-07-02 16:16:55

标签: sql database c++-cli

尝试访问表行,但它变为IndexOutOfRangeException数据库只有一个表和2行

SqlConnection ^ conDatabase =
        gcnew SqlConnection(L"Data Source=(LocalDB)\v11.0;AttachDbFileName='C:/Users/pcusername/Documents/Visual Studio 2010/Projects/nv/nv/project/project/vn.mdf';Integrated Security='True'");
    SqlCommand ^ cmdDatabase =
        gcnew SqlCommand(L"SELECT * FROM Table;", conDatabase);

    dataSet1 = gcnew DataSet("Table");
    SqlDataAdapter ^ sda = gcnew SqlDataAdapter();


    sda->SelectCommand = cmdDatabase;
    dataSet1->Tables;

    DataRow ^ recEmployee = dataSet1->Tables[1]->Rows[0];/*System.IndexOutOfRangeException*/

2 个答案:

答案 0 :(得分:1)

尝试:

DataRow ^ recEmployee = dataSet1->Tables[0]->Rows[0];

由于c ++基于零索引,因此第一个表将位于索引零处,而不是一个。在尝试检索表和行之前检查表和行是否也是一个好主意。确保您实际从数据库中获得任何结果。如果你没有得到任何东西,它可能是你的sql语句中的分号。有些连接不允许在你的SQL中使用半冒号。

答案 1 :(得分:0)

C ++集合从零开始,因此您应该使用Tables[0]返回第一个表,而不是Tables[1]