[ADO.NET] Existence d'une table

Résolu
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007 - 15 févr. 2006 à 11:51
n_youbi Messages postés 12 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 30 octobre 2007 - 24 oct. 2007 à 13:19
Bonjour,

J'ai du code vb.net 2003 avec un Try ... Catch ... End Try, et dans mon Try je fais des traitements sur une base Access avec ADO.NET (datareader, dataadapter, etc...).
Mon problème est simple : dans certains cas de figures de l'utilisation de mon application, une ou des tables peuvent ne pas exister, si bien que quand je les alimente par des requêtes, ça plante en me disant qu'elles n'existent pas.
Je voudrais donc faire une fonction qui teste l'existence ou non de ces tables, afin le cas échéant de les créer avant de les alimenter.

Si vous avez une piste, merci beaucoup.

Pourquoi faire simple quand on peut faire compliqué?????That is the question

5 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
15 févr. 2006 à 14:02
désolé, aujourd'hui j'écris vraiment n'importe quoi !

drôle d'idée de vouloir absolument utiliser ADOX alors que la bdd existe déjà ...

tu me diras pourquoi faire simple...



il suffit d'executer une requête simple sur la table, si une erreur est levée alors la table n'existe pas...



Private Function DataTableExists(ByVal cnx As OleDb.OleDbConnection, ByVal tableName As String) As Boolean



Dim cmd As New OleDb.OleDbCommand(String.Concat("SELECT * FROM ", tableName), cnx)



Try



cnx.Open()

cmd.ExecuteNonQuery()



Return True



Catch ex As OleDb.OleDbException



Return False



Finally



cnx.Close()



End Try



End Function



c'est déjà beaucoup plus simple !!!


[ Dalida ]
3
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
15 févr. 2006 à 12:24
salut,



si tu veux créer une table tu finiras par utiliser ADOX, donc pourquoi ne pas l'utiliser pour tester l'existence de ta table ?



Dim cnxString As String = "..."



Private Function DataTableExists(tableName As String) As Boolean



Dim result As Boolean = False



Dim cat As New ADOX.Catalog

cat.let_ActiveConnection(cnxString)



For Each tbl As ADOX.Table In templateCatalog.Tables



If tbl.Type.Equals("TABLE") = True _

AndAlso If (tbl.Name tableName) True Then



result = True

Exit For



End If



Next tbl



cat = Nothing



Return result



End Function



[ Dalida ]
0
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
15 févr. 2006 à 13:20
Merci mais dans la mesure du possible, je souhaiterais rester sur ADO. En effet je pars d'une appli existante et je ne veux pas dénaturer la méthode de programmation à outrance en restant dans la lignée de ce qui a été fait.

Pour créer une table je n'ai pas de problème, les requêtes qui s'executent sans retour de données du type CREATE TABLE fonctionnent correctement, c'est juste pour le test sur l'existence d'une table que je bloque un peu...

Merci quand même. A défaut d'une solution standard, je testerai celle ci.

Pourquoi faire simple quand on peut faire compliqué?????That is the question
0
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
15 févr. 2006 à 15:28
Je ne te le fais pas dire !!!!

c'est tellement simple que je passe pour un débutant de ne pas l'avoir trouvé....
J'aurais préféré une méthode x ou y standard, mais je me contenterais de cette solution qui me semble ma foi fort à propos.
Reste plus qu'à tester...

Merci! réponse acceptée!

Pourquoi faire simple quand on peut faire compliqué?????That is the question
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
n_youbi Messages postés 12 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 30 octobre 2007
24 oct. 2007 à 13:19
bonjour,
j'ai besoin d'un script sous vb.net  qui teste l'existance d'une base de données sql server
Merci d'avance
0