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 :

Sqlite avec WITH - SQLite error near "WITH"


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de pio_killer
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 194
    Par défaut Sqlite avec WITH - SQLite error near "WITH"
    Bonjour à tous ,

    je suis en train de faire une appli en winform qui travaille avec une base sqlite.

    Je suis sur Visual studio 2019 et sur le framework .NET 4.7.2

    J'ai un problème sur une syntaxe et je bloque dessus depuis un moment.

    Pour faire simple je n'arrive pas à lancer une requête avec un "WITH" comme ci-dessous (celle-ci n'est qu'un exemple) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    WITH one AS ( SELECT 1 ) SELECT * FROM one;

    Et voici ce que j'ai fait en C# :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlCommand = "WITH one AS ( SELECT 1 ) SELECT * FROM one;";
    J'ai l'exeption suivante :
    System.Data.SQLite.SQLiteException*: 'SQLite error near "WITH": syntax error'
    - $exception {"SQLite error\r\nnear \"WITH\": syntax error"} System.Data.SQLite.SQLiteException

    La requête est correcte car elle fonctionne dans "DB Browser for SQLite".

    Donc j'en déduis que soit je l'ai mal écrit, soit ce type de syntaxe est impossible avec C#.

    Mais je ne trouve personne qui ai eu ce problème sur internet.

    Je vient donc ici au cas où quelqu'un a des info.

    Merci d'avance pour toute aide.


  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Les CTE sont une nouveauté de SQLite 3.8.3 : pouvez-vous vérifier la version que vous utilisez dans votre programme ?

    Plus qu'une limitation de C#, il s'agit probablement d'une limitation du package qui n'est pas suffisamment récent.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Passioné ...
    Inscrit en
    Juillet 2020
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Passioné ...
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2020
    Messages : 145
    Par défaut
    Bonjour,

    Le dernier point-virgule de la requête SQL ( avant le guillemet final, dans la requête c# ) me pose problème. Êtes vous certains de cette syntaxe ?
    De plus, ne serai-ce pas mieux avec :

    SqlCommand command = connection.CreateCommand();
    command.CommandText =" votre requete sql ...";

    Cordialement Denis

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DenisUrçay Voir le message
    Le dernier point-virgule de la requête SQL ( avant le guillemet final, dans la requête c# ) me pose problème. Êtes vous certains de cette syntaxe ?
    En toute logique le ; est l'indicateur de fin de requête.
    Il est généralement facultatif quand la requête est unitaire, mais obligatoire si vous exécutez plusieurs requête dans un même lot (on navigue ensuite dans les résultats en faisant dataReader.NextResult() ).
    Sauf si SQLite ne supporte pas cette fonctionnalité (ce qui est loin d'être impossible) l'erreur ne provient probablement pas de là. Mais vu qu'il n'y a qu'une seule requête dans la commande, autant tester sans A l'époque des RecordSet et de SQL Server 6.5 effectivement un ; plantait le connecteur ADODB.

  5. #5
    Membre confirmé Avatar de pio_killer
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 194
    Par défaut
    Bonjour.

    Suite à une autre de mes questions sur SQLite sur ce forum, j'ai réinstallé avec la dernière version depuis visual studio.
    Et maintenant ça fonctionne.

    Merci pour votre aide

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

Discussions similaires

  1. Set @variable = sous-requete avec with
    Par famjerom dans le forum Développement
    Réponses: 4
    Dernier message: 07/06/2009, 10h10
  2. [E-03] - Objet avec with
    Par Pierre845 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2009, 23h14
  3. SQLite error near à la lecture d'une donnée texte
    Par ernie74 dans le forum SQLite
    Réponses: 4
    Dernier message: 04/01/2009, 06h13
  4. [2005] syntaxe avec WITH(CTE), DECLARE, RETURNS
    Par weejungle dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/05/2008, 13h00
  5. Requete recursive avec WITH
    Par Kuroro dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 06/09/2007, 23h05

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