2014-07-02 2 views
0

tente d'accéder à la ligne de table, mais, mais il devient IndexOutOfRangeException la base de données a une seule table et 2 rangéesdatarow 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

Ceci est C++/CLI pas C++. Veuillez marquer votre question de manière appropriée. –

+0

Merci de corriger désolé à ce sujet. – DDD

Répondre

1

Essayez:

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

Depuis C++ est zéro indexé en fonction, la première table sera à l'indice zéro, pas un seul. C'est aussi une bonne idée de vérifier que la table et la ligne existent avant d'essayer de les récupérer. Assurez-vous que vous obtenez réellement des résultats de la base de données. Si vous n'obtenez rien, il se peut que ce soit le point-virgule dans votre instruction sql. Certaines connexions n'autorisent pas les points-virgules dans votre SQL.

+0

Je vous remercie, mais une autre question s'il vous plaît. System.IndexOutOfRangeException à DataRow^recEmployee = dataSet1-> Tables [0] -> Lignes [0]; c'est la ligne de données cette fois. – DDD

+0

@ user3541906 Savez-vous que vous avez des lignes? Avez-vous vérifié le nombre de lignes dans le débogueur? – Vulcronos

0

collections C++ sont basés sur zéro, vous devez donc utiliser Tables[0] pour retourner la première table, pas Tables[1]