के साथ तालिकाओं को बनाने के लिए एक स्क्रिप्ट चलाकर मैं hsqldb का उपयोग करता हूं ताकि मेरे यूनिट परीक्षणों को चलाने के लिए डेटाबेस एक्सेस की आवश्यकता हो।HSQLDB
क्षण के लिए, जब मैं एक विशेष परीक्षा के लिए एक मेज बनाना चाहते हैं, मैं निम्नलिखित कोड है:
<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>
:
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
संदर्भ में परिभाषित पुनः प्राप्त
अब, मैं अपनी तालिका को SQL स्क्रिप्ट से बनाना चाहता हूं (बेशक, इस स्क्रिप्ट में एक से अधिक टेबल निर्माण होंगे):
CREATE TABLE T_DATE_FOO (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
CREATE TABLE T_DATE_BAR (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP);
...
मैंने एचएसक्यूएलडीबी दस्तावेज में देखा है कि मैं उसे run a script at the startup से पूछ सकता हूं। हालांकि, यह मेरी आवश्यकताओं को पूरा नहीं करता है, क्योंकि मैं रनटाइम पर एक स्क्रिप्ट चलाने के लिए चाहता हूं।
बेशक, मैं स्वयं फ़ाइल को पढ़ सकता हूं, और प्रत्येक SQL कथन के लिए, मैं ps.executeUpdate()
कमांड चलाता हूं, लेकिन मैं इस तरह के समाधान का उपयोग नहीं करना चाहता (सिवाय इसके कि कोई अन्य समाधान नहीं है)।
कोई विचार?
यह काम कर रहा है, धन्यवाद! हालांकि, मुझे समझ में नहीं आता क्यों वसंत कई लाइनों में एक बयान देने से इनकार करता है (यहां तक कि अंत में ';' के साथ भी ... – romaintaz
जो निष्पादित करता है स्क्लस्क्रिप्ट विधि का उपयोग आप करते हैं? कार्यान्वयन में एक अंतर है –