2014-07-02 39 views
0

試圖訪問錶行,但是卻成爲IndexOutOfRangeException數據庫只有一個表,2行數據行System.IndexOutOfRangeException

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*/ 
+1

這是C++/CLI而不是C++。請適當地標記您的問題。 –

+0

感謝您對此抱歉。 – DDD

回答

1

嘗試:

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

由於C++是零基於索引,所述第一表將在索引零,而不是一個。在嘗試檢索它們之前檢查表和行是否存在也是一個好主意。確保你真的從數據庫中獲得任何結果。如果你沒有得到任何東西,可能是你的sql語句中的分號。有些連接不會允許sql中的分號。

+0

謝謝,但請再提一個問題。 DataRow上的System.IndexOutOfRangeException^recEmployee = dataSet1-> Tables [0] - > Rows [0];它這次是數據行。 – DDD

+0

@ user3541906你確定你有行嗎?你在調試器中檢查行數嗎? – Vulcronos

0

C++集合從零開始,所以你應該使用Tables[0]重返第一表,而不是Tables[1]

相關問題