web-dev-qa-db-fra.com

La colonne abc n'appartient pas à la table?

J'itère un DataTable dans mon code C #. J'essaie d'obtenir le contenu en utilisant une colonne nommée "columnName" de la ligne nommée "row" en utilisant - 

object value = row["ColumnName"];

Je reçois cette erreur - 

Erreur: System.Reflection.TargetInvocationException: l'exception a été jeté par la cible d'une invocation. ---> System.ArgumentException: la colonne 'FULL_COUNT' n'appartient pas à la table. at System.Data.DataRow.GetDataColumn (String columnName)

Comment est-ce possible ? Mon ensemble de requêtes/résultats SQL comporte une colonne portant ce nom et la requête s'exécute même dans le studio de gestion. 

Comment puis-je corriger cette erreur?

9
Steam

Je suppose que votre code est une itération supposée être quelque chose comme ça

DataTable table = new DataTable();
foreach (DataRow row in table.Rows) {
    foreach (DataColumn col in table.Columns) {
        object value = row[col.ColumnName];
    }
}

Si tel est le cas, row["ColumnName"] de chaque itération recherche la même colonne avec le nom ColumnName qui, de toute évidence, n’existe pas dans votre table.

La manière correcte est row[ColumnName] ou row[col.ColumnName] dans l'itération ci-dessus

14
AaA

J'ai eu un problème similaire sur mon code c #, en utilisant un jeu de données que j'avais initialisé avec succès et rempli avec les données de la base de données.

Donc, mon jeu de retour était:

data = new Byte [0];

data = (Byte []) (dataset.Tables [0] .Rows [0] ["systemLogo_img"]);

Bien sûr, l’erreur était dans la recherche de la colonne 'systemLogo_img'.

J'ai remarqué que vous n'avez simplement PAS à appeler/qualifier le nom de la colonne. La correction est donc:

data = new Byte [0]; 

data = (Byte []) (dataset.Tables [0] .Rows [0] .ItemArray [0]);

En termes simples: utilisez "ItemArray" à la position.

Merci

1
Chagbert

N'écrivez pas les noms de colonnes Gradeview à la place des noms de colonnes de la base de données.

dataGridViewEmployeeClass.Rows[n].Cells[0].Value = item["write there Database ColumnS names"].ToString();
0
QaribUllahMoslim