Bonjour,
J'ai un fichier csv et je dois vérifier le contenu de certaines de ces colonnes. Pour cela, j'utilise une connexion ODBC et je vérifie le contenu des colonnes. Le problème est que si le contenu de la colonne est un alphanumérique (avec du numérique ça marche), ça se plante comme ça :
Exception non gérée : System.InvalidCastException: Impossible d'effectuer un cas
t d'un objet de type 'System.DBNull' en type 'System.String'.
à Microsoft.Data.Odbc.OdbcDataReader.GetString(Int32 i)
à testFormat.Program.Main(String[] args)
Le code que j'utilise est le suivant :
// Ouverture connexion + requête
string ConnectionString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + repbdd + ";Extensions=asc,csv,tab,txt;";
OdbcConnection conn = new OdbcConnection(ConnectionString);
conn.Open();
OdbcCommand MyCommand = new OdbcCommand("SELECT " + champin + " FROM " + repbdd + fichin, conn);
OdbcDataReader MyDataReader;
MyDataReader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Parcours des données
while (MyDataReader.Read())
{
valide = false;
if isNumeric( MyDataReader.GetString(0).ToString())
{
valide = true;
}
if (valide)
{
...
}
else
{
...
}
}
En gros, tant que j'ai des numériques, ça se passe bien. Par contre, si c'est du alpha, mydatareader.getstring(0) pointe sur null... La fonction IsNumeric fonctionne correctement à condition de lui passer un paramètre non Null. Ici, le plantage a lieu avant d'entrer dans la fonction...
Merci de votre aide
Matthieu