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

MS SQL Server Discussion :

Problème dans SqlCommand()


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 75
    Points
    75
    Par défaut Problème dans SqlCommand()
    Bonsoir,
    Je suis en train d'écrire un code VB avec accès à la base de données. J'ai rencontré un problème dans l'exécution d'un code. Ce code contient la création d'une vue et en même temps l'appel à une procédure stockée. Les deux sont séparés par la syntaxe "Go".
    A l'exécution une erreur me sort en disant que Incorrect syntax near 'go'.
    Quelqu'un pourra t-il me dire pourquoi et est ce qu'il existe une solution?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Enlève le 'Go' et exécute tes requêtes une par une.

    Si besoin utilises une transaction

  3. #3
    Membre régulier Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par The eye Voir le message
    Enlève le 'Go' et exécute tes requêtes une par une.

    Si besoin utilises une transaction
    Si je comprend bien, il y a pas moyen d'exécuter le code avec du "Go" à l'intérieur. Parce que moi je dois lire dans un fichier, et si il faut ajouter tout ce traitement, cela devient compliquer d'autant puisque j'ai des centaines de fichiers que je dois faire passer.

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Si tu exécutes les requêtes avec SqlCommand, j'imagine que tu mets le contenu de tes fichiers dans une variable String ?
    Dans ce cas, il est assez simple de parser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //tu remplaces GO pour pouvoir parser
    Requete = requete.replace(" GO ", "/")
     
    //tu parses
    Dim reqs as string() = Requete.split("/")
     
    //tu exécutes
    For i = 0 to reqs.length
       objsql.sqlcommand = reqs(i)
       objsql.executenonquery()
    Next
    (le code n'est pas testé bien entendu...)

  5. #5
    Membre régulier Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Points : 75
    Points
    75
    Par défaut
    Oui, je les mets dans un string.
    J'avais déjà testé ta solution mais elle s'avérait insuffisante parce que les fichiers contiennent tantôt "Go", tantôt "go", tantôt "GO".
    J'ai donc utiliser les expressions régulières pour le faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function SplitByGo(ByVal path As String) As String()
            Dim tab As String() = Nothing
            Dim regexp As Regex = New Regex("\sgo\s", RegexOptions.IgnoreCase)
            Dim code As String = System.IO.File.ReadAllText(path)
            tab = regexp.Split(code)
            Return tab
    End Function
    Et ça marché.
    Merci pour l'aide.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par katoyi Voir le message
    Si je comprend bien, il y a pas moyen d'exécuter le code avec du "Go" à l'intérieur. Parce que moi je dois lire dans un fichier, et si il faut ajouter tout ce traitement, cela devient compliquer d'autant puisque j'ai des centaines de fichiers que je dois faire passer.
    Je vois que tu as résolu ton problème...

    Dommage, j'allais te proposer d'essayer avec des ";", je crois que ça marche avec le provider SQLOLEDB...

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

Discussions similaires

  1. Problème dans la déclaration de Winmain
    Par lvdnono dans le forum DirectX
    Réponses: 3
    Dernier message: 29/05/2004, 13h38
  2. problème dans l'hebergement
    Par Redouane dans le forum ASP
    Réponses: 9
    Dernier message: 31/12/2003, 23h34
  3. Quel est le problème dans ce code ?
    Par Luther13 dans le forum C
    Réponses: 12
    Dernier message: 26/08/2003, 16h09
  4. Problème dans analisys Manager
    Par ien_ien23 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 11/07/2003, 14h38
  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