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

VB.NET Discussion :

Exécution de deux requetes sql simultanées . ça marche ?


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut Exécution de deux requetes sql simultanées . ça marche ?
    Bonjour tout le monde,

    après avoir écumé les sites web sur comment récupérer un ID du dernier enregistrement effectué par un utilisateur précis, et après avoir trouvé la réponse, je dois matérialiser ma requête en VB.NET. voici un exemple de code:

    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
     Dim oConn As MySqlConnection
            Dim myCommand As New MySqlCommand
            Dim Cave As String
            'Dim Financement As String
            'Dim Stationnement As String
            Dim asciA As String
            Dim tyPecuisineus As String
     
     
     
            oConn = New MySqlConnection()
     
            oConn.ConnectionString = "server =127.0.0.1;user id=sample; password='sample';database= PMV"
            myCommand.Connection = oConn
            mycommand.commandtext = "INSERT INTO foo  VALUES('"&0&"','"& text1.text &"');"                
     
     
     
            Try
                oConn.Open()
                myCommand.ExecuteNonQuery()
     
            Catch myerror As MySqlException
                MessageBox.Show("Error Connecting to Database: " & myerror.Message)
            Finally
                oConn.Dispose()
            End Try
        End Sub

    dans la ligne mycommand.commandtext puis je rajouter ceci ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mycommand.commandtext = "INSERT INTO foo  VALUES('"&0&"','"& text1.text &"');"  &  "INSERT INTO foo2 (foo2.fid,foo2.text) 
    VALUES('LAST_INSERT_ID()'&",'"&text1.text&"');"
    merci pour votre retour!

  2. #2
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Points : 36
    Points
    36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VALUES('LAST_INSERT_ID()'&"
    marche chez vous ?

    sinon pour ta question quand tu exécute les 2 requêtes que est ce que ça donne erreur , exception rien dite nous afin de vous mieux aider

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Pour être honnête je n ai pas encore testé je ne suis pas devant mon environnement de dev. Je testerai ça ce soir et ferai de toute façon un retour

    En théorie d après certains documents que j ai vue traitant last insert id cela fonctionne. De plus le code de la requête est directement récupéré du site web mysql

    La seule chose en fait qui m'interressait dans cette question est: est ce que la syntax est / semble correcte ?

  4. #4
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    je viens de voir votre commentaire avec plus de détails: merci je n'avais pas vue que j'avais sorti la virgule des guillemets! et non du coup ça ne marchera pas merci!

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par manuly Voir le message
    est ce que la syntax est / semble correcte ?
    Non ! Les concaténations pour écrire des requêtes c'est le mal absolu.
    Plusieurs tutos et articles existent sur ce site afin de comprendre comment écrire correctement une requête SQL. Il existe ce qu'on appelle des paramètres et des commandes sql.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    mettre plusieurs requetes dans un commandtext est possible avec sql server, mais l'exécution n'est pas simultannée
    c'est chacun son tour, si une erreur de sévérité supérieure à 10 se produit sur l'une des requete ca sort et la fin n'est pas exécutée
    voir les transactions pour annuler en cas le début en cas de plantage sur l'une des requetes

    il est aussi possible de changer le commandtext et de refaire un execute
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    merci à vous je vais regarder de ce coté là alors ^^ 1 virer les concaténations , 2 utiliser une transaction. merci

  8. #8
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut Resultats de vos conseils
    Je vous fait part de mon travail suite à vos remarques

    Tout d'abord j'ai créer cette procédure pour laquelle je ne suis pas sûr de moi au niveau de la concaténation. Si vous avez un conseil je suis preneur:
    procedure Mysql:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    DROP PROCEDURE IF EXISTS `BailleurResp`;
    DELIMITER $$
    CREATE PROCEDURE BailleurResp
     (
    IN nombail varchar(40),
    IN cptadr varchar(40),
    IN Numrue varchar(40),
    IN nomrue varchar(40),
    IN Cp varchar(40),
    IN Ville varchar(40),
    IN Tel varchar(40),
    IN fax varchar(40),
    IN email varchar(70),
    IN genre varchar(40),
    IN nomres varchar(40),
    IN Prenom varchar(40),
    IN Fonction varchar(40),
    IN telresp varchar(40),
    IN Faxresp varchar(40),
    IN Mobresp varchar(40),
    IN Emailresp varchar(70),
    IN note longtext )
     
    BEGIN
     
    START TRANSACTION ; 
    INSERT INTO  Bailleurs
    (
    `bailleurs`.`NomBail`,
    `bailleurs`.`ComplementAdresseBail`,
    `bailleurs`.`NumRueBail`,
    `bailleurs`.`NomRueBail`,
    `bailleurs`.`CpBail`,
    `bailleurs`.`VilleBail`,
    `bailleurs`.`TelBail`,
    `bailleurs`.`FaxBail`,
    `bailleurs`.`EmailBail`
    	)
    VALUES
    	(
    	nombail ,
    	cptadr ,
    	Numrue ,
    	nomrue ,
    	Cp ,
    	Ville ,
    	Tel,
    	fax,
    	email);
     
    		INSERT INTO  responsablesbailleurs
    		(
    		 `responsablesbailleurs`.`FIDBailleurs`,
    		 `responsablesbailleurs`.`GenreResp`,
    		 `responsablesbailleurs`.`NomResp`,
    		 `responsablesbailleurs`.`PrenomResp`,
    		 `responsablesbailleurs`.`FonctionResp`,
    		 `responsablesbailleurs`.`TelResp`,
    		 `responsablesbailleurs`.`MobResp`, 
    		 `responsablesbailleurs`.`FaxResp`,
    		 `responsablesbailleurs`.`EmailResp`,
    		 `responsablesbailleurs`.`NoteResp`
    		)
    		VALUES
    		( last_insert_id(),
    		 genre ,
    		 nomres ,
    		 Prenom ,
    		 Fonction ,
    		 telresp ,
    		 Mobresp,
    		 Faxresp ,
    		 Emailresp ,
    		 note
    		);
    Commit;
    END$$
    Voici mon code sur la partie VB:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


    Dim oConn As MySqlConnection
    Dim myCommand As New MySqlCommand
    Dim myAdapter As New MySqlDataAdapter
    Dim myData As New DataTable


    oConn = New MySqlConnection()
    oConn.ConnectionString = "server=127.0.0.1;User Id=monuser;password=monpass;Persist Security Info=True;database=pmvsocial"
    myCommand.Connection = oConn

    'passe la requete au moteur mysql pour l'enregistrement
    Try
    oConn.Open()

    myCommand.CommandText = "BailleurResp"
    myCommand.CommandType = CommandType.StoredProcedure

    myCommand.Parameters.AddWithValue("@nombail", TextBox1.Text)
    myCommand.Parameters("@nombail").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@cptadr", TextBox9.Text)
    myCommand.Parameters("@cptadr").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Numrue", TextBox2.Text)
    myCommand.Parameters("@Numrue").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@nomrue", TextBox3.Text)
    myCommand.Parameters("@nomrue").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Cp", TextBox5.Text)
    myCommand.Parameters("@Cp").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Ville", TextBox4.Text)
    myCommand.Parameters("@Ville").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Tel", TextBox6.Text)
    myCommand.Parameters("@Tel").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@fax", TextBox7.Text)
    myCommand.Parameters("@fax").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@email", TextBox8.Text)
    myCommand.Parameters("@email").Direction = ParameterDirection.Input
    'param resp

    myCommand.Parameters.AddWithValue("@genre", TextBox18.Text)
    myCommand.Parameters("@genre").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@nomres", TextBox10.Text)
    myCommand.Parameters("@nomres").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@prenom", TextBox17.Text)
    myCommand.Parameters("@prenom").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Fonction", TextBox16.Text)
    myCommand.Parameters("@Fonction").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@telresp", TextBox15.Text)
    myCommand.Parameters("@telresp").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Mobresp", TextBox13.Text)
    myCommand.Parameters("@Mobresp").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Faxresp", TextBox14.Text)
    myCommand.Parameters("@Faxresp").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@Emailresp", TextBox12.Text)
    myCommand.Parameters("@Emailresp").Direction = ParameterDirection.Input

    myCommand.Parameters.AddWithValue("@note", TextBox11.Text)
    myCommand.Parameters("@note").Direction = ParameterDirection.Input



    myCommand.ExecuteNonQuery()


    Catch ex As MySql.Data.MySqlClient.MySqlException
    Console.WriteLine(("Error " & ex.Number & " has occurred: ") + ex.Message)

    MessageBox.Show("Connexion à la base impossible pour l'enregistrement du Bailleur: " & ex.Message)


    Finally
    oConn.Dispose()
    End Try
    J'ai trouvé cela un peu long de recopier chaque variable sur des lignes différentes peut on simplifier avec une variable tableau ou tout mettre à la suite ?

    Sinon le tout fonctionne, j espere sincèrement que cela est correct en tout cas ça fonctionne

    Merci encore, j y ai passé du temps mais sans vous j'aurais tout fait n importe comment!!! ça en valait la peine

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    parameters.direction vaut input par défaut surement, cette ligne est inutile
    après oui une ligne de code par parameter
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Je viens de supprimer la ligne et effectivement elle est useless ^^ merci. ce sujet est donc résolu.

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

Discussions similaires

  1. Exécuter Deux Requete SQL Lors d'un Click Sur Bouton
    Par sisiniya dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/06/2010, 17h30
  2. Mixage de deux requetes SQL
    Par Myogtha dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 05/11/2007, 12h59
  3. Problème d'exécution d'une requete SQL
    Par new dotnet(c#) dans le forum Struts 1
    Réponses: 2
    Dernier message: 26/07/2007, 19h51
  4. Réponses: 5
    Dernier message: 21/06/2007, 14h31
  5. Réponses: 1
    Dernier message: 28/06/2006, 16h07

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