Lire et executer un fichier sql

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 31 déc. 2003 à 02:15
cs_lejuif Messages postés 14 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 10 juin 2004 - 1 juin 2004 à 08:37
Bonjour, je crée un fichier .sql comme cela

    Public Sub EcrireRequete(ByVal sSql As String, ByVal Reset As Boolean)

        Directory.SetCurrentDirectory(Server.MapPath(""))

        Dim maRequeteSQL As New FileInfo("data\marequete.sql")

        If maRequeteSQL.Exists And Reset Then
            maRequeteSQL.Delete()
        End If

        Dim LogStream As New StreamWriter("data\marequete.sql", True)
        LogStream.WriteLine(sSql)
        LogStream.Close()

    End Sub


et je le lis comme ca :

    Public Function LireRequete() As String

        Try

            Directory.SetCurrentDirectory(Server.MapPath(""))

            Dim maRequeteSQL As New FileInfo("data\marequete.sql")

            If Not maRequeteSQL.Exists Then
                Trace.Write("Le Fichier sql que je viens tt juste de faire à disparu ")
                Exit Function
            End If

            Dim LogStream As New StreamReader("data\marequete.sql", True)
            LireRequete = LogStream.ReadToEnd
            LogStream.Close()

        Catch ex As Exception

            Trace.Warn("Erreur")
        End Try

    End Function


ensuite je fais comme ca sous ma page pour ecrire le fichier :

'reset = true
            For Each InfoMP3 As Mp3Info In ListeInfoMP3

                    sSQL = "INSERT INTO Mp3 ("
                    sSQL &= "Album,"
                    sSQL &= "Genre)"

                    sSQL &= " VALUES ("

                    sSQL &= "'" & InfoMP3.Album & "',"
                    sSQL &= "'" & InfoMP3.Genre.ToString& "')"
                    
                    EcrireRequete(sSQL, Reset)
                Reset = False
            Next

' .....
' .....

            mcommand.CommandText = LireRequete()

            Try
                mcommand.ExecuteNonQuery()
            Catch ex As Exception
                mConn.Dispose()
            End Try

            mConn.Dispose()



Et ca marche pas, la requete Sql est bonne, si il n'y a qu'une seule ligne ca marche mais sinon ca marche pas, comment je dois faire.
Je suis obligé de faire un fichier sql car à l'initialisation de la base j'arrive à avoir qd 3000 mp3 et la requete SQL et beaucoup plus grande (16 champs) et je pense que ca doit faire lourd sur le serveur car une fois tt les mp3 passé (apres 20min) le fichier sql pese plusieurs centaines de ko
J'ai une autre solution, c'est d'executer chaque ligne une a une, mais ca doit surement etre plus long

Merci de m'aider

3 réponses

cs_lejuif Messages postés 14 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 10 juin 2004
31 mai 2004 à 15:21
a chaque passage dans ta boucle pour tu écrases ta requete sql précédente. Il n'exécute donc que la derniere requete entrée.

Il suffit simplement de mettre a l'intérieur de ta boucle pour :
mcommand.CommandText = LireRequete()
mcommand.ExecuteNonQuery()

Il l'executera alors a chaque fois

Il existe des methodes plus simples pour écrire une requete sql
pourquoi n'utilise tu pas simplement une variable de type string (ex dim sql as string ="Insert into mp3 (X) values (" & valeur & ")" a la place de Dim maRequeteSQL As New FileInfo("data\marequete.sql")?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
31 mai 2004 à 15:42
Merci de ta réponse mais depuis le temps j'ai du trouvé une autre solution à mon problème :)

Cyril
0
cs_lejuif Messages postés 14 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 10 juin 2004
1 juin 2004 à 08:37
Autant pour moi.
J'aurais peut être du regarder la date. ;)
0
Rejoignez-nous