Problème de requête en VB dans une base MySQL [Au secours ^^' ]
cs_Ryuuku
Messages postés7Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention17 juin 2005
-
31 mai 2005 à 16:52
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
31 mai 2005 à 20:33
Bijour,
je suis en train de monter un e-commerce, chaque semaine je reçois une base de données texte de mon fournisseur avec tous les produits et les fournisseurs. Afin de remplir la base de données du e-commerce, je découpe le fichier texte concernant les produits en plusieurs fichiers textes que je souhaite ensuite charger avec des LOAD DATA INFILE.
Si j'exécute les requêtes à partir de PHP MyAdmin ça marche mais pas à partir de VB. Pour pouvoir utiliser VB, j'ai téléchargé MyODBC 3.51. Les fabricants étant dans ma base de données en clé étrangère par rapport aux produits, je dois les charger d'abord. J'ai créé un fichier manufacturers à charger. Mais avant même de le charger, je dois faire un DELETE sur la table car c'est plus simple que de faire un UPDATE.
Quand je veux effectué le DELETE, je n'ai pas de msgbox d'erreur mais l'instruction ne s'exécute.
Voiilà mon code :
Sub conmysql()
Try
'MyODBC 3.51 connection string
Dim MyConString
As
String = "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=oscommerce;" & _
"UID=root;" & _
"OPTION=3;"
'Connection
Dim MyConnection
As
New OdbcConnection(MyConString)
MyCommand.CommandText = "DELETE TABLE if exists manufacturers"
MyCommand.ExecuteNonQuery()
MsgBox("Table effacée")
'Load Manufacturers
Console.WriteLine("Loading data infile manufacturers")
MyCommand.CommandText = "LOAD DATA LOCAL INFILE 'C:/Web/EasyPHP_1-8\\tmp\\php71.tmp' INTO TABLE MANUFACTURERS FIELDS TERMINATED BY ',' ENCLOSED BY ' LINES TERMINATED BY '\r\n'(manufacturers_name)"
MyCommand.ExecuteNonQuery()
'Catch ODBC Exception
Catch MyOdbcException
As OdbcException
Dim i
As
Integer
Console.WriteLine(MyOdbcException.ToString)
'Catch program exception
Catch MyException
As Exception
Console.WriteLine(MyException.ToString)
End
Try
End
Sub
Et voilà le message que j'ai dans ma console à la fin de l'exécution :
System.Data.Odbc.OdbcException: ERROR [23000] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE if exists manufacturers' at line 1
at System.Data.Odbc.OdbcConnection.HandleError(HandleRef hrHandle, SQL_HANDLE hType, RETCODE retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method)
at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
Visiblement, l'erreur se situe à la ligne :
MyCommand.CommandText = "DELETE TABLE if exists manufacturers"
c'est pourquoi j'ai mis une msgbox juste après le MyCommand.ExecuteNonQuery()
J'aimerai avoir une réponse s'il-vous-plaît je suis en train de m'arracher les cheveux
merci
A voir également:
Problème de requête en VB dans une base MySQL [Au secours ^^' ]
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 mai 2005 à 20:33
Salut
Je n'ai pas tout lu ni testé, mais pourquoi ne pas faire une simple requète : Delete From manufacturers
et si tu veux aussi virer la structure de table : Drop Table manufacturers
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)