2009-02-25 6 views

Répondre

10

Je n'en connais pas, sauf quelques-uns qui fonctionnent, contrairement à MySQL où nous avons cette facilité d'IF EXIST.

Qu'est-ce que vous faites est, essayez de vous connecter à la base de données, si elle ne pourrait pas être son là. Et après une connexion réussie, vous pouvez effectuer une sélection simple, comme SELECT count (*) FROM TABLE_NAME, pour savoir si la table existe ou non. Vous dépendriez de l'exception. Même dans un exemple officiel de Sun, j'ai vu le même travail.

Dans Oracle, nous avons des tables de dictionnaire à connaître sur les objets de base de données. Je doute que nous ayons quelque chose comme ça à Derby.

[Modifié]

Eh bien, je trouve qu'il ya un moyen de savoir si la table existe. Essayez, SELECT nom de table FROM SYSTABLES. C'est pour vérifier l'existence d'une table, pour vérifier la base de données, vous devrez peut-être faire une chose similaire, j'ai expliqué ci-dessus.

8

Adeel, vous pouvez également utiliser Connection.getMetaData pour retourner un objet DatabaseMetaData, puis utilisez la getTables, une fois que vous avez la connexion à la base de données bien sûr. Cela a l'avantage de fonctionner pour n'importe quelle base de données avec un pilote JDBC qui vaut le coup.

Pour vérifier si la base de données existe, si vous utilisez Derby de manière intégrée ou si le serveur est sur la même machine, vous pouvez vérifier si le dossier de la base de données existe. Est un peu kludgy cependant. Je ferais comme Adeel suggère et essayer de se connecter, attraper l'exception si ce n'est pas là.

2

Je suggère de récupérer l'objet DatabaseMetaData, puis d'utiliser la méthode getTables (null, null, null, nouvelle chaîne [] {"TABLE"}), qui retourne un ResultSet. Utilisez la méthode next() du ResultSet, qui renvoie un booléen, pour tester si des tables existent. S'il vérifie vrai, vous avez des tables existantes. False, et la base de données est vide.

Questions connexes