Problème de requête en VB dans une base MySQL [Au secours ^^' ]

cs_Ryuuku Messages postés 7 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 17 juin 2005 - 31 mai 2005 à 16:52
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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)


MyConnection.Open()


Console.WriteLine("Connection State::" & MyConnection.State.ToString)



'delete


Console.WriteLine("deleting table")



Dim MyCommand
As
New OdbcCommand


MyCommand.Connection = MyConnection


MsgBox("Connexion établie")


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

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Rejoignez-nous