IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Adresse de Fichiers string et c# [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut Adresse de Fichiers string et c#
    Bonjour à tous et à toutes,
    Je migre progressivement de vb vers c#.
    J'avoues que j'aime bien le langage c#.
    J'ai un petit soucis avec l'enregistrement d'une adresse de fichier Local en particulier \ qui doit être reservé dans le langage comme il y en a en VB.
    En Vb pour ignorer dans un string les caractères spéciaux réservés il fallait les doubler.
    ET la on met le symbole @ devant le string pour lui spécifier certainement que c'est une adresse locale afin d'ignorer les caractères speciaux.
    J'essaie de stocker une adresse dans une BDD mais il ne m'intègre pas les caractères spéciaux ? et bien sur il ne me relie pas l'adresse correctement non plus.
    Faut il comme en VB doubler ces caractères ou une autre astuce ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                            string adresse = @"" + (string)dr.Cells[2].Value + "";
                            Requete2="Insert into param SET IdReference='" + (string)dr.Cells[0].Value +"' , Client='"+ (string)dr.Cells[1].Value+"' , FichierSource='"+adresse+"';";
                            OdbcCommand cmd = new OdbcCommand(Requete2,cn5);
                            cmd.ExecuteNonQuery();
    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Le @ n'est pas fait pour ignorer les caractères spéciaux.
    Il est fait pour annuler l'interprétation de l'antislash (\).
    Ceci a également pour effet que pour échapper un guillemet double, il faut en mettre deux.

    Imaginons que ta cellules contienne la chaine suivante : C:\Users\popo\AppData\Local\MyApplication.
    alors (string)dr.Cells[2].Value va contenir ceci : C:\\Users\\popo\\AppData\\Local\\MyApplication

    De ce fait puisque, tu mets à un @, tu dis que le l'antislash n'est considéré comme un caractère d'échappement.
    En plus, tu double le guillemet.
    Tu va donc te retrouver avec "C:\\Users\\popo\\AppData\\Local\\MyApplication" dans ta base de données.

    La bonne solution est de passer par les requêtes paramétrées (à adapter à ta structure)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Requete2="Insert into param SET IdReference=@IdReference , Client=@Client , FichierSource=@Adresse";
    OdbcCommand cmd = new OdbcCommand(Requete2,cn5);
    cmd.Parameters.Add("@IdReference", OdbcType.NVarChar, 10).Value = (string)dr.Cells[0].Value;
    cmd.Parameters.Add("@Client ", OdbcType.NVarChar, 10).Value = (string)dr.Cells[1].Value;
    cmd.Parameters.Add("@Adresse", OdbcType.NVarChar, 10).Value = (string)dr.Cells[2].Value;
    cmd.ExecuteNonQuery();

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Merci popo maiis... Helas non cela ne fonctionne pas.
    Je stock dans Mysql pour info.
    pour info ce sont des VARCHAR(45) les champs de la table de réception.

    Avec ma méthode je me retrouvais avec un chemin d'accès sans les \ stocké dans la table en Gros Z:REP1REP2FICHIER.EXT
    A PRESENT j'ai juste NULL et ce dans tous les champs de la table que j'ajoute


    Que vaut 10 dans tes paramètres ? la longueur de la chaine envoyée ?

    Merci de te pencher sur mon soucis c'est sympa.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Je n'ai évidemment pas corrigé ta requête car je pensais que tu verrais ton erreur tout seul.

    La syntaxe d'une requête d'insertion est la suivante : INSERT INTO Table (Champ1, Champ2) VALUES ('Valeur1', 'Valeur2')

    Donc ta requête devrait être :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO param (IdReference, Client, FichierSource) VALUES(@IdReference, @Client, @Adresse)

    Edit :
    Mais comme tu utilises le couple ODBC + MySQL, essaie avec la syntaxe suivante si la première ne fonctionne pas :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO param (IdReference, Client, FichierSource) VALUES(?, ?, ?)

    Et oui, 10 est la longueur.
    Sinon tu peux utiliser cmd.Parameters.AddWithValue

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Je ne pense pas que ce soit le format de ma requete

    Mon Format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    INSERT INTO TABLE SET Idreference='A05455' , Client='TOTO' , FichierSource='C:\Test\Fichier.txt';
    car ce format a toujours fonctionné et fonctionne pour d'autre requête ne comportant \ dans les chaines envoyés.

    Je viens d'essayer ton format de Requête ( que je connais tu peux même faire avec seulement les valeurs sans les noms des champs si tu respecte l'ordre de la base) mais qui ne change strictement rien je ne reçois que des champs Null;
    J'ai mis un point d'arrêt et regardé les paramètres les valeurs sont bien chargé dans les paramètres.

    J'ai tenté de modifier la chaine de caractère \ par des \\ ce que je faisait en vb.net ( et ca fonctionne en VB) mais la non ou il y a un paramètre dans la base de donnée a conf quelquepart.

  6. #6
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Ca fonctionne avec la syntaxe des points d'interrogations

    Merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2007] Insertion automatique de l'adresse du fichier dans POWERPOINT 2007
    Par 03phil dans le forum Powerpoint
    Réponses: 1
    Dernier message: 20/07/2009, 09h27
  2. [IB]Localisation, ibtool et fichiers *.strings
    Par Omfraax dans le forum Apple
    Réponses: 0
    Dernier message: 16/09/2008, 12h46
  3. Probleme champ input file (adresse du fichier)
    Par omar_elid dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 26/08/2008, 17h58
  4. [FTP] Adresse de fichier
    Par nbmx40 dans le forum Langage
    Réponses: 5
    Dernier message: 29/01/2007, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo