[ADO.NET] Existence d'une table

Résolu
Signaler
Messages postés
56
Date d'inscription
mardi 23 avril 2002
Statut
Membre
Dernière intervention
20 avril 2007
-
Messages postés
12
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
30 octobre 2007
-
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

Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016

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 ]
Messages postés
56
Date d'inscription
mardi 23 avril 2002
Statut
Membre
Dernière intervention
20 avril 2007

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
Messages postés
56
Date d'inscription
mardi 23 avril 2002
Statut
Membre
Dernière intervention
20 avril 2007

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
Messages postés
12
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
30 octobre 2007

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