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

Linq Discussion :

[Linq] Exception : "Point-virgule absent à la fin de l'instruction SQL."


Sujet :

Linq

  1. #1
    Invité
    Invité(e)
    Par défaut [Linq] Exception : "Point-virgule absent à la fin de l'instruction SQL."
    Bonjour,

    Alors voila, débutant sur Linq, je suis fâce à un problème qui m'échappe un petit peu. Je souhaite faire un insert sur une BD Access via Linq to SQL, et cela sur une table qui qui possède plusieurs colonnes dont une qui est à la fois une Clé Primaire et un nombre unique généré automatiquement par la table.

    Le mappage de ma table est donc par exemple celui ci :

    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
     
    [Table(Name = "Personne")]
    partial class Personne
    {
    [Column(IsPrimaryKey = true, IsDbGenerated = true)]
    public int ID_personne { get; set; }
    [Column]
    public string Nom { get; set; }
    [Column]
    public string Prenom { get; set; }
    [Column]
    public string Age { get; set; }
    [Column]
    public string Profession { get; set; }
    }
    Puis l'insertion Linq :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DataContext dataContext = connexion.getDataContext();
    Table<Personne> tablePersonne = dataContext.GetTable<Personne>();
    Personne pers = new Personne
    {
    Nom = textBox1.Text,
    Prenom = textBox2.Text,
    Age = textBox3.Text,
    Profession = comboBox1.Text
    };
    tablePersonne.InsertOnSubmit(pers);
    dataContext.SubmitChanges();
    Et cela soulève donc l'exception suivante :
    Point-virgule absent à la fin de l'instruction SQL.
    Je dois avouer que cela me laisse un petit peu perplexe étant donné qu'il ne s'agit pas de manipuler directement de requète sur une insertion Linq.
    Dernière chose : tout cela, sachant que mon insert marche si je retire le paramètre "IsDbGenerated = true", et que je met en "dure" sur ma structure un ID valide. Mais à ce moment la, ça n'a plus d'intérêt.

    Merci d'avance pour toute aide éventuelle.


    Cordialement,

    Guillaume.
    Dernière modification par Invité ; 25/05/2010 à 12h06.

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Linq to sql est une technologie morte depuis plus d'un an ... pourquoi ne pas utiliser entity framework ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je dois avouer que je n'ai pas regarder de ce côté la.
    Est ce que cela correspond à la même chose que SQL to Entity ?
    Et autre chose, qui est un petit peu la source du problème chez moi, il y a t-il compatibilité avec Access ?

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    L'exception "Point-virgule absent à la fin de l'instruction SQL." est due au SQL généré lors de l'insertion. Linq To SQL génère deux requêtes: une pour insérer et une pour récupérer l'identifiant de la nouvelle ligne. Access n'aime pas la syntaxe. Access n'est pas pris en charge par LinqToSQL ni Entity Framework. Peut-être vaudrait-il mieux changer de base: SQL Server ou SQL Compact
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Très bien. Donc il s'agit bien d'un problème de compatibilité et non pas d'autre chose.
    Dans mon cas précis, la migration vers une autre source de donnée n'est pas envisageable, pour de multiples raisons. Je cherche donc à exploiter les dernières technologies de connexion (Linq ...), mais uniquement sous Access.

    Pour celles et ceux confrontés au même problème, on m'a depuis indiqué l'utilisation d'une bibliothèque de développeurs tierces qui semble justement faire le travail : ALinq, et qui propose donc un "Linq to Access".
    http://www.alinq.org
    C'est en cours de test de mon côté.

    En tout cas, merci pour cette réponse qui m'a quelque peu éclairci.

    Cdlt,

    Guillaume.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon, et bien après essai, ALinq fonctionne parfaitement avec Access, et pour tout type de manipulation sur la base.
    Bien évidemment, le fonctionnement des requêtes est le même que Linq, sauf qu'ici ça fonctionne avec Access.

    Dernière précision : les développeurs fournissent effectivement librement les .DLL sur le site, cependant il s'agit bien de licences payantes pour une utilisation professionnelle ...


    Cdlt,

    Guillaume.

  7. #7
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Merci pour le retour.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  8. #8
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Sinon tu peux utiliser nhibernate qui est un outil bien plus puissant, stable et fonctionnel Linqtoaccess mais surtout libre et gratuit.
    Il gère Access ainsi qu'une 20ene d'autre base de données juste en modifiant la configuration donc le code que tu créé actuellement pour Access sera réutilisable pour n'importe quel autre base de données

    Et on peut requêter avec linq également

  9. #9
    Invité
    Invité(e)
    Par défaut
    Humm .. et bien ma fois, je teste ça de ce pas, puisque je suis toujours plus ou moins la dessus aujourd'hui.

    Merci infiniment pour le renseignement, je ne connaissais absolument pas.


    Cordialement,

    Guillaume.


    PS : A vrai dire, Linq & Co était plutôt accessoire, la vraie problématique à laquelle je suis confrontée est la suivante : http://www.developpez.net/forums/d92...ves-ms-access/
    Je suis preneur de toute suggestion ...
    Dernière modification par Invité ; 27/05/2010 à 15h28.

  10. #10
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Pour info tu pourras utiliser le meme code pour Access ou SQLite via nhibernate.

    Ce framework permet vraiment d'être indépendant de la base de données

Discussions similaires

  1. Point-virgule absent à la fin de l'instruction SQL
    Par colorid dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/06/2011, 15h41
  2. Réponses: 6
    Dernier message: 10/03/2009, 12h53
  3. [ODBC] Point-virgule absent à la fin de l'instruction SQL
    Par loulitta dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/06/2008, 10h55
  4. [access 2003] erreur d'execution 3137, point virgule absent
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/02/2008, 08h41
  5. Problème de point-virgule absent
    Par *.Har(d)t dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/05/2007, 13h15

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