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 :

VB.NET Mysql probleme de delay


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut VB.NET Mysql probleme de delay
    Bonjour,

    Je rencontre une petit problème en VB.NET 2010

    Mon fonction et j'arrive sans problème a prendre le contenu d'un fichier text ligne par ligne et l'injecter dans ma DB Mysql , mais j'ai été obliger de créer une fonction Pause pour lui laisser le temps de l'injecter dans la DB car sinon il saute plus de la moitié des résultats ... ma question est , est-ce qu'il est possible de faire en sorte qu'il attende la fin de l'injection dans la DB avant de passer au traitement suivant ?

    Cordialement
    JuVeNaL

  2. #2
    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 : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Manifestement la pause n'est pas une bonne idée. C'est que tu as un problème de conception ailleurs car ca n'a pas à sauter des résultats.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Manifestement la pause n'est pas une bonne idée. C'est que tu as un problème de conception ailleurs car ca n'a pas à sauter des résultats.

    Voici ce que j'ai qui rempli ma DB

    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
     Public Sub SaveNames(ByRef SQLStatement As String)
            Dim cmd As MySqlCommand = New MySqlCommand
     
            With cmd
                .CommandText = SQLStatement
                .CommandType = CommandType.Text
                .Connection = SQLConnection
                .BeginExecuteNonQuery()
            End With
            'SQLConnection.Close()
            'Console.Out.WriteLine("Successfully Added!")
            'SQLConnection.Dispose()
     
     
      End Sub

    Et dans mon while

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim SQLStatement As String = "INSERT INTO  right_info(hostname,locpath,sharenm) VALUES ('" & t & "','" & tst & "','" & shio.shi2_netname & "')"
    SaveNames(SQLStatement)
    Pause(1)
    Merci pour ton aide.

    JuVeNaL

  4. #4
    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 : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Je te conseille plusieurs choses: passer par une requête parametrée, utiliser un ExecuteNonQuery (et pas le Begin qui est asynchrone), verifier sa valeur de retour et encapsuler tout ca dans des try-catch.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Je te conseille plusieurs choses: passer par une requête parametrée, utiliser un ExecuteNonQuery (et pas le Begin qui est asynchrone), verifier sa valeur de retour et encapsuler tout ca dans des try-catch.
    Ou la la ....... bon j'avoue je suis débutant ... et la pour moi c'est du chinois lol ... sais-tu m'en dire plus ? lol

  6. #6
    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 : 39
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Le cours de VB.Net aborde toutes ces notions
    http://plasserre.developpez.com/cours/vb-net/

  7. #7
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Le cours de VB.Net aborde toutes ces notions
    http://plasserre.developpez.com/cours/vb-net/

    Voici le code en entier :

    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
     
    Imports System.Net
    Imports System.Text.RegularExpressions
    Imports System.Runtime.InteropServices
    Imports System.Text
    Imports MySql.Data.MySqlClient
    Imports System.Net.Mime.MediaTypeNames
     
    Module Module1
        Dim ServerString As String = "server=xxxxxxxxxxxx;User Id=sistool;Password=xxxxxxxxxx;Database=right"
        Dim SQLConnection As MySqlConnection = New MySqlConnection
     
        Public Sub Main1()
            Dim SRV_Name As String = System.Net.Dns.GetHostName
            Console.WriteLine(SRV_Name)
        End Sub
        <DllImport("Netapi32.dll", CharSet:=CharSet.Unicode)> _
        Private Function NetShareEnum(ByVal ServerName As [String], ByVal level As Integer, ByRef bufPtr As IntPtr, ByVal prefmaxlen As UInteger, ByRef entriesread As Integer, ByRef totalentries As Integer, _
     ByRef resume_handle As Integer) As Integer
        End Function
     
     
        <DllImport("Netapi32.dll", SetLastError:=True)> _
        Function NetApiBufferFree(ByVal Buffer As IntPtr) As Integer
        End Function
     
     
     
        Public Structure SHARE_INFO_2
            <MarshalAs(UnmanagedType.LPWStr)> _
            Public shi2_netname As String
            Public shi2_type As UInteger
            <MarshalAs(UnmanagedType.LPWStr)> _
            Public shi2_remark As String
            Public shi2_permissions As Int32
            Public shi2_max_uses As Int32
            Public shi2_current_uses As Int32
            <MarshalAs(UnmanagedType.LPWStr)> _
            Public shi2_path As String
            <MarshalAs(UnmanagedType.LPWStr)> _
            Public shi2_passwd As String
        End Structure
     
     
     
     
        Public Sub Main()
            SQLConnection.ConnectionString = ServerString
            Try
                If SQLConnection.State = ConnectionState.Closed Then
                    SQLConnection.Open()
                    Console.Out.WriteLine("Successfully Connected to Mysql Database")
                Else
                    'SQLConnection.Close()
                    Console.Out.WriteLine("Connection is closed")
                End If
            Catch ex As Exception
                Console.Out.WriteLine(ex.ToString)
            End Try
     
            Dim Servername As [String] = "NOHVFS01"
            Dim level As Integer = 2
            Dim prefmaxlen As UInteger = 368880
            Dim entriesread As Integer = 0
            Dim totalentries As Integer = 0
            Dim resume_handle As Integer = 0
            Dim bufPtr As IntPtr = IntPtr.Zero
     
            Dim ret As Integer = NetShareEnum(Servername, level, bufPtr, prefmaxlen, entriesread, totalentries, _
            resume_handle)
            Dim currentPtr As IntPtr = bufPtr
            Dim nStructSize As Integer = Marshal.SizeOf(GetType(SHARE_INFO_2))
     
            Dim t As Integer = 0
            Dim i As Integer = 0
     
            Dim Debut, Fin As DateTime
     
            Dim Duree As TimeSpan
     
            Debut = Now
     
            While i < entriesread
                Dim shio As SHARE_INFO_2 = DirectCast(Marshal.PtrToStructure(currentPtr, GetType(SHARE_INFO_2)), SHARE_INFO_2)
                Dim tst As String = Replace(shio.shi2_path, "\", "\\")
                'Dim SQLStatement As String = "INSERT INTO  right_info(hostname,locpath,sharenm) VALUES ('" & t & "','" & tst & "','" & shio.shi2_netname & "')"
                'Dim SQLStatement As String = "INSERT INTO  right_info(locpath,sharenm) VALUES ('" & t & "','" & t & "')"
                Console.Out.WriteLine("Partage: " + shio.shi2_netname + shio.shi2_path) '+ vbLf)
                Console.Out.WriteLine(shio.shi2_permissions)
                Console.Out.WriteLine(shio.shi2_current_uses)
                Console.Out.WriteLine(t)
                'SaveNames(SQLStatement)
     
                Pause(0.6)
     
                currentPtr = New IntPtr(currentPtr.ToInt32() + nStructSize)
                System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
                t = t + 1
     
     
     
            End While
     
     
            Fin = Now
     
            Duree = Fin - Debut
     
            Console.Out.WriteLine(Duree)
     
     
     
     
     
            NetApiBufferFree(bufPtr)
     
        End Sub
     
        Public Sub SaveNames(ByRef SQLStatement As String)
            Dim cmd As MySqlCommand = New MySqlCommand
     
            With cmd
                .CommandText = SQLStatement
                .CommandType = CommandType.Text
                .Connection = SQLConnection
                .BeginExecuteNonQuery()
            End With
            'SQLConnection.Close()
            'Console.Out.WriteLine("Successfully Added!")
            'SQLConnection.Dispose()
     
     
        End Sub
        Public Sub Pause(ByVal duration As Long)
            Dim Current As Long
            Current = Timer
            Do Until Timer - Current >= duration
     
            Loop
        End Sub
    End Module

Discussions similaires

  1. [C# , .NET , MySql ] un mini probleme de restauration
    Par elmcherqui dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 27/04/2010, 08h10
  2. [MySQL] Probleme de connexion
    Par sylvain_neus dans le forum Hibernate
    Réponses: 19
    Dernier message: 01/08/2007, 09h34
  3. VB.net et mysql probleme d'insert
    Par kahya dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/10/2006, 01h47
  4. [debutante][JDBC/MySQL] probleme de pilote
    Par nounou dans le forum JDBC
    Réponses: 3
    Dernier message: 27/04/2004, 14h26
  5. [MYSQL] Probleme lors de la compilation
    Par Nasky dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 24/02/2004, 17h04

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