H2 इन-मेमोरी डेटाबेस JVM के अंदर मेमोरी में डेटा स्टोर करता है। जब JVM बाहर निकलता है, तो यह डेटा खो जाता है।
मुझे संदेह है कि आप जो कर रहे हैं वह नीचे दिए गए दो जावा वर्गों के समान है। इनमें से एक वर्ग एक तालिका बनाता है और दूसरा इसमें सम्मिलित करने का प्रयास करता है:
import java.sql.*;
public class CreateTable {
public static void main(String[] args) throws Exception {
DriverManager.registerDriver(new org.h2.Driver());
Connection c = DriverManager.getConnection("jdbc:h2:mem:test");
PreparedStatement stmt = c.prepareStatement("CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRSTNAME VARCHAR(64), LASTNAME VARCHAR(64))");
stmt.execute();
stmt.close();
c.close();
}
}
तथा
import java.sql.*;
public class InsertIntoTable {
public static void main(String[] args) throws Exception {
DriverManager.registerDriver(new org.h2.Driver());
Connection c = DriverManager.getConnection("jdbc:h2:mem:test");
PreparedStatement stmt = c.prepareStatement("INSERT INTO PERSON (ID, FIRSTNAME, LASTNAME) VALUES (1, 'John', 'Doe')");
stmt.execute();
stmt.close();
c.close();
}
}
जब मैंने इन कक्षाओं को एक के बाद एक चलाया, तो मुझे निम्नलिखित आउटपुट मिले:
C: \ Users \ Luc \ सामान> जावा CreateTable
C: \ Users \ Luc \ सामान> java InsertIntoTable
थ्रेड में अपवाद "मुख्य" org.h2.jdbc.JdbcSQLException: तालिका "PERSON" नहीं मिली; SQL कथन:
INSERT INTO PERSON (ID, FIRSTNAME, LASTNAME) VALUES (1, 'जॉन', 'डो') [42102-154]
org.h2.message.DbException.getJdbcSQLException (DbException.java:327)
org.h2.message.DbException.get (DbException.java:167)
org.h2.message.DbException.get (DbException.java:144)
...
जैसे ही पहली java
प्रक्रिया बाहर निकलती है, तालिका CreateTable
अब नहीं बनी होती है। इसलिए, जब InsertIntoTable वर्ग आता है, तो इसमें सम्मिलित करने के लिए कोई तालिका नहीं है।
जब मैंने कनेक्शन स्ट्रिंग्स को बदल दिया jdbc:h2:test
, तो मैंने पाया कि ऐसी कोई त्रुटि नहीं थी। मैंने यह भी पाया कि एक फ़ाइल test.h2.db
दिखाई दी थी। यह वह जगह थी जहां एच 2 ने तालिका रखी थी, और चूंकि यह डिस्क पर संग्रहीत किया गया था, तालिका अभी भी सम्मिलित करने योग्य वर्ग को खोजने के लिए वहां थी।
Person
फिर से टेबल बनाना है । H2 डिस्क पर आपके द्वारा बनाए गए डेटाबेस के बारे में पहले से कुछ नहीं जानता है।