Я использую hsqldb для запуска своих модульных тестов, которым требуется доступ к базе данных.
На данный момент, когда я хочу создать таблицу для конкретного теста, у меня есть следующий код:
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();
}
}
Метод getConnection()
извлекает источник данных, определенный в контексте Spring
:
<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>
Теперь я хочу создать свою таблицу из сценария SQL (конечно, этот сценарий будет содержать более одного создания таблицы):
CREATE TABLE T_DATE_FOO (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
CREATE TABLE T_DATE_BAR (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
...
Я видел в документации HSQLDB, что я могу попросить его запустить скрипт при запуске . Однако он не соответствует моим требованиям, так как я хочу запустить скрипт во время выполнения.
Конечно, я могу прочитать файл сам, и для каждого оператора SQL я запускаю команду ps.executeUpdate()
, но я не хочу использовать этот вид решения (кроме случаев, когда нет другого решения).
Есть идеи?