jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
31 déc. 2003 à 02:15
cs_lejuif
Messages postés14Date d'inscriptionlundi 28 avril 2003StatutMembreDernière intervention10 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
cs_lejuif
Messages postés14Date d'inscriptionlundi 28 avril 2003StatutMembreDernière intervention10 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")?