L'exécution d'un script pour créer des tables avec HSQLDB
- Je utiliser hsqldb mes tests unitaires qui ont besoin d'une base de données access.
Pour le moment, lorsque je veux créer une table pour un test, j'ai le code suivant:
private void createTable() {
PreparedStatement ps;
try {
ps = getConnection().prepareStatement("CREATE TABLE T_DATE (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP)");
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
La getConnection()
méthode de récupérer une source de données définie dans un Spring
contexte:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:memoryDB"/>
<property name="username" value="SA"/>
<property name="password" value=""/>
</bean>
Maintenant, je veux créer ma table à partir d'un script SQL (bien sûr, ce script va contenir plus d'une création de la table):
CREATE TABLE T_DATE_FOO (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
CREATE TABLE T_DATE_BAR (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
...
J'ai vu dans la HSQLDB la documentation que je peux lui demander de exécuter un script au démarrage. Cependant, il ne répond pas à mes exigences, je veux lancer un script au moment de l'exécution.
Bien sûr, je peux lire le fichier de moi-même, et pour chaque instruction SQL, je lance un ps.executeUpdate()
commandement, mais je ne veux pas utiliser ce genre de solution (sauf si il n'y a pas d'autre solution).
Une idée?
OriginalL'auteur Romain Linsolas | 2010-02-19
Vous devez vous connecter pour publier un commentaire.
puisque vous êtes déjà à l'aide de printemps, vous pouvez utiliser le SimpleJdbcUtils.executeSQLScript méthode qui exécute un script SQL où les instructions sont séparées par des points-virgules.
cette classe est le printemps-module de test (JAR).
;
à la fin)...qui executeSqlScript méthode utilisez-vous ? il y a une différence dans la mise en œuvre
OriginalL'auteur Stefan De Boey
Vous pourriez donner
org.hsqldb.util.SqlFile
un essai. Cette classe semble être un match parfait pour votre problème.OriginalL'auteur Ralf Huthmann
Tout d'abord, je ne sais pas les conséquences de ce phénomène. Je l'ai utilisé depuis longtemps, il a travaillé pour moi.
Le SQLExec classe est de ant.jar, vous pouvez regarder dans la fourmi source pour créer votre propre classe utilitaire,
OriginalL'auteur Adi
J'ai eu le même problème. J'ai fini par diviser le fichier texte ; et l'exécution de chaque instruction séparément. Il était OK parce que nous n'avions pas insère donc pas de point-virgule à l'intérieur des états. Je n'ai pas trouvé un moyen simple d'exécuter un script SQL à l'époque
OriginalL'auteur artemb