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

Windows Forms Discussion :

[DB]Problème de CommandText


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [DB]Problème de CommandText
    Bonjour à tous !

    Je m'adresse à vous parce que j'ai un problème (vous vous en doutiez hein ?!). Je tente d'envoyer une requête de type SQL à une base de données Access qui est créée plus haut.

    Je reçois un message d'erreur indiquant que
    Aucun texte de commande n'a été défini pour l'objet de commande.
    Après avoir recherché un peu sur votre forum j'ai trouvé une solution qui demandait d'utiliser les chaines pramétrées, mais le mienne est bien trop longue pour que ce soit rentable. Je ne le ferais qu'en cas d'obligation.

    Voilà le code :

    - Création de la DB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private void CreateNewMDB(string path)
    {
        ADOX.Catalog cat = new ADOX.Catalog();
     
        at.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
                      "Data Source=" + path +
                      "; Jet OLEDB:Engine Type=5");
     
        cat = null;
    }
    - Création de toutes les tables (cette fonction ne soulève pas d'exception !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    private void CreateMDBTable(FieldList P_TableDesc)
            {
                String temp;
     
                //Construction de la ConnectionString.
                temp = "";
                temp += "CREATE TABLE " + P_TableDesc[0].SQLName + " (";
                for (int i = 1; i < P_TableDesc.Count; ++i)
                {
                    temp += "[" + P_TableDesc[i].SQLName + "] " + P_TableDesc[i].SQLType;
                    if (i != P_TableDesc.Count - 1) temp += ", ";
                }
                temp += ")";
     
                //Création de la commande
                OleDbCommand MyMDBCmd = new OleDbCommand(temp, MyMDBDataConnection);
     
                //Envoi de la requête.
                if (MyMDBDataConnection.State != System.Data.ConnectionState.Open)
                {
                    MyMDBDataConnection.Open();
                    MyMDBCmd.ExecuteNonQuery();
                    MyMDBDataConnection.Close();
                }
                else
                {
                    MyMDBDataCmd.ExecuteNonQuery();
                    MyMDBDataConnection.Close();
                }
            }
    - Remplissage de toutes les tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    public void CreateMDBRecord(List<Field> P_Fields)
            {
                int i;
                String temp;
     
                //Construction de la connectionString.
                temp = "";
                temp += "INSERT INTO [" + P_Fields[0].SQLName + "] (";
                for (i = 1; i < P_Fields.Count; ++i)
                {
                    temp += "[" + P_Fields[i].SQLName + "]";
                    if (i != P_Fields.Count - 1) temp += ", ";
                }
                temp += ") VALUES (";
                for(i = 1; i < P_Fields.Count;++i)
                {
                    //temp += "'" + P_Fields[i].Value + "'"; //Vérification de la syntaxe des chaines de caractères.
                    if (String.IsNullOrEmpty(P_Fields[i].Value))
                    {
                        temp += "' '";
                    }
                    else
                    {
                        temp += "'" + P_Fields[i].Value + "'";
                    }
                    if (i != P_Fields.Count - 1) temp += ", ";
                }
                temp += ")";
     
                //Création de la commande
                OleDbCommand MyMDBCmd = new OleDbCommand();
                MyMDBCmd.CommandText = temp;
                MyMDBCmd.Connection = MyMDBDataConnection;
     
                //Envoi de la requête.
                if (MyMDBDataConnection.State != System.Data.ConnectionState.Open)
                {
                    MyMDBDataConnection.Open();
                    MyMDBDataCmd.ExecuteNonQuery();
                    MyMDBDataConnection.Close();
                }
                else
                {
                    MyMDBDataCmd.ExecuteNonQuery();
                    MyMDBDataConnection.Close();
                }
            }
    Voilà la commande en sortie de la partie //Construction de la ConnectionString :

    INSERT INTO [Users] ([Id], [Civilite], [Name], [Prenom], [Type], [ActivationMode], [State], [AccountName], [AccountPwd], [RightsBeginDate], [RightsEndDate], [RightsIsPermanent], [Company], [AddressStreetNb], [AddressStreetName1], [AddressStreetName2], [AddressZipCode], [AddressCity], [AddressCountry], [TelOffice], [TelPortable], [TelHome], [PictureFile], [Language], [AdministrateurLocal], [DelegueLocal], [FreeText01], [FreeText02], [FreeText03], [FreeText04], [FreeText05], [FreeText06], [FreeText07], [FreeText08], [FreeText09], [BadgeId], [CodeClavier]) VALUES ('1', 'Monsieur', 'Badge Orange', ' ', 'Administrateur', 'Badge', 'Active', 'badge orange', 'badge orange', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '\Photos\Photo_Unknown.jpg', 'FR', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'FFFF35BF3E48', '123456FF')

    Bon, désolé pour la longueur du post et du code
    Si vous voyez quoi que ce soit, toute suggestion me ferait avancer puisque je bute sur ce problème depuis ce matin. Merci d'avance à tous ceux qui répondront.
    Bonne journée

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu crées une commande MyMDBCmd, mais celle que tu exécutes est MyMDBDataCmd...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    En effet ^^ c'est à force de modifications de code que j'ai oublié de changer ces détails.
    Cependant, les deux commandes sont initialisées de la même manière, et après modification j'ai encore le même problème.

    Je me demande si il n'y a pas une partie de ma commande que j'ai mal initialisée. Il me semblait que la Command et la Connection suffisaient.
    Je ne comprends pas pourquoi ma commande ne prend pas en compte la String que je lui envoie qui, pourtant, m'a l'air bien formatée.


    EDIT : j'ai réglé le problème ! Pour ceux qui auraient le même problème, utiliser le connectionStringBuilder pour initialiser sa connection est une bonne chose à faire, mais il ne faut pas y mettre la partie "accès à la DB" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String mode = "Mode=Read|Share Deny Read|Share Deny Write;"
    Il faut gérer ça lors de la création et pas pendant la connection.

    Voilà merci de ta contribution tomlev, le code sera quand même plus clair comme ça !

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

Discussions similaires

  1. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  3. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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