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 :

Problème de requête SQLite [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Par défaut Problème de requête SQLite
    Bonjour,

    J'ai un souci pour utiliser une base de données SQLite.

    J'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void Inserer(object sender, EventArgs e)
    {
      using (SQLiteConnection myconnection = new SQLiteConnection("Tests.sqlite"))
      {
        using (SQLiteCommand mycommand = new SQLiteCommand(myconnection))
        {
          mycommand.CommandText = "INSERT INTO banque (id, libelle, agence, commentaire ) VALUES( '3','Lib','Agen','Comm')";                            
          mycommand.ExecuteReader();
        }
      }
     }
    A l'exécution, j'ai une erreur : InvalidOperationException

    La requête est bonne car si je la lance dans le gestionnaire SQLite de firefox elle s'exécute avec succès.

    Est-ce que je la formate pas correctement?
    La connexion à la base n'est-elle pas faite correctement?

    Merci de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Data Analyste Senior
    Inscrit en
    Août 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyste Senior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2010
    Messages : 53
    Par défaut
    Bonsoir,

    Je pense que ton problème vient du champ ID.

    S'il est en auto-incrément, il ne faut pas le mettre ni dans la liste des champs ni dans la liste des valeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mycommand.CommandText = "INSERT INTO banque (libelle, agence, commentaire ) VALUES('Lib','Agen','Comm')";
    Sinon je présume qu'il s'agit d'une valeur numérique, donc à ne pas encapsuler entre des quotes dans ta liste de valeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mycommand.CommandText = "INSERT INTO banque (id, libelle, agence, commentaire ) VALUES( 3,'Lib','Agen','Comm')";
    Troisième possibilité : tu essaies d'insérer une chaîne contenant une quote, par exemple dans le champs Comm.
    Dans ce cas fais un replace des quotes par 2 quotes avant ta commande sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Comm = Comm.Replace("'", "''");

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Bonjour,

    Quatrième possibilité :
    la colonne ID est marqué comme clé primaire, et la valeur 3 existe déjà.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Par défaut
    Salut,

    Soit je ne suis pas bien réveillé, soit il manque le .Open(); pour la connexion non ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Par défaut
    Bonjour,

    Débutant avec SQLite, j'ai fait très "simple" mais pas très correct techniquement, à savoir tous les champs de la table sont des VARCHAR.

    Donc pas d'autoincrément pour le champ ID, ni de valeur numérque.

    Ensuite, dans le code présenté 'Comm' est une chaine (là aussi j'ai fait très simple en faisant un insert de chaines simple et non de variables).

    Par ailleur, ID est bien la clé de la table mais la valeur 3 n'existe pas.

    Enfin, j'ai trouvé après pas mal de recherche un exemple qui contenait un mais si je rajoute cette ligne, j'ai le même message que précédement.

    Je viens de penser : Ca ne pose pas de problème que j'ai le fichier ouvert dans le gestionnaire de base SQLite de firefox? Problème d'accès au fichier?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Par défaut
    Try this one:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mycommand.ExecuteNonQuery();
    à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mycommand.ExecuteReader();

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Citation Envoyé par firewire2 Voir le message
    Je viens de penser : Ca ne pose pas de problème que j'ai le fichier ouvert dans le gestionnaire de base SQLite de firefox? Problème d'accès au fichier?
    Oh si, SQLite étant embarqué, le fichier ne peut être ouvert que par un seul processus à la fois.
    D’ailleurs dans ce cas, la propriété Message de l'exception est plutôt explicite.
    Toujours dans ce cas, la méthode Open() doit lancer cette exception.

  8. #8
    Membre très actif
    Homme Profil pro
    En rupture avec la societé
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : En rupture avec la societé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    bonsoir

    as tu pensé a copier la db dans le répertoire bin/debug et ou release

    car par défaut quand la db n'existe pas la ou elle devrait être, elle est crée automatiquement.

    donc si tu regarde, tu dois effectivement trouver ta db mais vide dans l'un des répertoires 'Debug ou Release' dans bin de ton projet, c'est pas plus simple que ça.

    il y a une petite technique avec visual studio : tu inclus ta db dans le projet, ensuite tu la sélectionne et tu sélectionne 'Copier dans le répertoire si plus récent' de la propriété Copier dans le répertoire.

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Par défaut
    Aléluia (je ne sais pas si c'est bien ortographié... )

    J'avais bien lié ma base au projet mais sans la copier automatiquement dans le répertoire bin/debug et ou release

    Mon INSERT cette fois a fonctionné !!

    Maintenant que je suis sorti des problèmes "basiques" je vais pouvoir me lancer dans un projet plus construit avec un vrai MCD.


    Merci à tous de votre aide

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

Discussions similaires

  1. Problème de requête BDD SQLite
    Par torres02 dans le forum Android
    Réponses: 4
    Dernier message: 26/04/2015, 23h20
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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