begin process at 2012 02 10 13:40:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

Autre

 > 

Problème de lecture d'un string dans une base ODBC texte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de lecture d'un string dans une base ODBC texte

vendredi 7 novembre 2008 à 11:04:07 | Problème de lecture d'un string dans une base ODBC texte

mdelahais

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
vendredi 7 novembre 2008 à 11:11:55 | Re : Problème de lecture d'un string dans une base ODBC texte

SharpMao

Membre Club
Hello,

Essaie comme ça :

valide = !MyDataReader.IsDBNull(0) && isNumeric( MyDataReader.GetString(0));

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
vendredi 7 novembre 2008 à 11:35:11 | Re : Problème de lecture d'un string dans une base ODBC texte

mdelahais

salut,

Le problème n'est pas de savoir si le champ est vide ou non. Je sais qu'il est remplit (sur mon jeu d'essai, il est remplit).
le problème, c'est que quand il a un champ alphanumérique, il me retourne DBNull....

Matthieu
vendredi 7 novembre 2008 à 11:53:29 | Re : Problème de lecture d'un string dans une base ODBC texte

mdelahais

J'ai réussi à avancer un peu...
En fait, le problème ne vient pas du fait que ce soit du caractère ou de l'alpha... Le problème est qu'il faut que toutes les données d'une même colonne ait une structure qui se ressemble.

Si je prend le fichier suivant:
Nom;Date
Toto;20080510 10:00
Tata;20080511

Ça se plante dès la première lecture

Par contre, si je prend le fichier :
Nom;Date
Toto;20080510 10:00
Tata;20080510 10:00

Ça passe...

en fait, ce qu'il faudrait pouvoir faire, c'est dire que les champs qui sortent de la requête sont forcément des strings, quelque soit leur format. Si quelqu'un à une idée, ce serait cool...

Merci

Matthieu

vendredi 7 novembre 2008 à 14:49:00 | Re : Problème de lecture d'un string dans une base ODBC texte

SharpMao

Membre Club
Excuse-moi,

J'avais bien vu ODBC, mais j'avais sauté l'information csv...
Je ne sais donc pas comment résoudre ton problème.

J'espère que tu trouveras.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
lundi 10 novembre 2008 à 02:35:04 | Re : Problème de lecture d'un string dans une base ODBC texte

bubbathemaster

Etant donné que c'est un probleme de cast, regarde le type des objets en sorties!

Au lieu de faire MyDataReader.GetString(0), fais qqch du genre object toto = MyDataReader["nomdelacolonne"]; et check avec le debugger le type de l'objet.

On peut pas trop t'aider, c'est clairement un problème à la con qui peut se résoudre facilement en débuggant step by step et avec qq watch.


Cette discussion est classée dans : problème, string, odbc, csv, mydatareader


Répondre à ce message

Sujets en rapport avec ce message

problème équivalence CHR(13) [ par ehmarc ] Bon en fait jai deja chercher sur le site et jai trouver comme réponse ca:string s1 = "\r\n";string s2 = @"";string s3 = System.Environment.NewLine;qu Problème Convert.To [ par Yen69 ] Bonjour, voila j'ai un probleme avec les calculs. using System; class Class1 { static void Main(string[] args) { string hello = "5+1" String + problème [ par emmanuel9 ] Bonjour, En faite j'ai un textBox avec des caractère genre " bonjou r " ; et il faut que je vire les espaces, j'ai trouvé la propriété Trim de la cl Problème appel DLL, effet de bord [ par kox007 ] Bonjour, Je travail sur un projet codé en C#. Celui ci fait appel à une fonction d'une DLL en C++. En entête du fichier j'éffectue bien la commande su Problème chaine de caractère [ par Globinours ] Voilà j'ai un petit problème je voudrais faire : string machaine; puis utiliser @machaine; Mais ça marche pas comme ça devrait marcher. Par exemple: problème de string et de nom de bouton [ par marliche0 ] Bonjour,J'ai des boutons nommés différemment en fonction de la ligne du tableau où ils se trouvent, par exemple pour le fournisseur n° 662, mon bouton DllImport problème de type const [ par akaii ] hello j ai un [DllImport("C://Dll//msfdll.dll")] vers une dll dans mon projet le problème c'est que DllImport() n'accepte qu'un const string et donc s problème en langage c# :System.NullReferenceException avec ue base de donéne Microsoft Access [ par avildark ] Bonjour a tous,Je suis actuellement en devellopement en c# d'une application qui permet d'integrer des données d'un fichier texte  dans une base Micro Encore un problème de Regex ! [ par yanis7518 ] Salut à tous.Je dois remplacer dans une string du type "IN" par "1" seulement si cette string n'est pas suivie par des voyelles (A, E, I, O, U, Y). J' Problème avec un DataSet [ par Jade86 ] Excuser moi, mais j'ai un petit problème avec les dataset.Voyer vous, je récupère un tableau de string via un web service, donc je suis obliger de fai


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales