[java] क्या मेरे पास H2 autocreate एक स्कीमा इन-मेमोरी डेटाबेस में हो सकता है?


1 Answers

"डिफ़ॉल्ट रूप से, जब कोई एप्लिकेशन DriverManager.getConnection(url, ...) कॉल करता है और यूआरएल में निर्दिष्ट डेटाबेस अभी तक मौजूद नहीं है, तो एक नया (खाली) डेटाबेस बनाया गया है।" - एच 2 डाटाबेस

अनुपूरक: @ थॉमस म्यूएलर दिखाता है कि कनेक्शन पर एसक्यूएल का निष्पादन कैसे करें, लेकिन मैं कभी-कभी कोड में बना और पॉप्युलेट करता हूं, जैसा कि नीचे दिया गया है।

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/** @see http://stackoverflow.com/questions/5225700 */
public class H2MemTest {

    public static void main(String[] args) throws Exception {
        Connection conn = DriverManager.getConnection("jdbc:h2:mem:", "sa", "");
        Statement st = conn.createStatement();
        st.execute("create table customer(id integer, name varchar(10))");
        st.execute("insert into customer values (1, 'Thomas')");
        Statement stmt = conn.createStatement();
        ResultSet rset = stmt.executeQuery("select name from customer");
        while (rset.next()) {
            String name = rset.getString(1);
            System.out.println(name);
        }
    }
}
Question

(मैंने पहले से ही H2 डेटाबेस को स्मृति में देखा है - स्प्रिंग / हाइबरनेट प्रश्न के माध्यम से इनिट स्कीमा ; यह यहां लागू नहीं है।)

मैं जानना चाहता हूं कि एच 2 में कोई सेटिंग है या नहीं, जो मुझे कनेक्ट करने पर स्कीमा को स्वतः बनाने की अनुमति देगी। अगर यह मदद करता है, तो मुझे केवल मेमोरी मामले में दिलचस्पी है।

एच 2 यूआरएल के अंत में विभिन्न अर्धविराम से अलग संशोधकों का समर्थन करता है, लेकिन मुझे स्वचालित रूप से स्कीमा बनाने के लिए कोई नहीं मिला। क्या ऐसी सुविधा है?




थॉमस ने जो लिखा है वह सही है, इसके अतिरिक्त, यदि आप कई स्कीमा शुरू करना चाहते हैं तो आप निम्न का उपयोग कर सकते हैं। ध्यान दें \\; दो निर्माण बयान अलग करना।

    EmbeddedDatabase db = new EmbeddedDatabaseBuilder()
                    .setType(EmbeddedDatabaseType.H2)
                    .setName("testDb;DB_CLOSE_ON_EXIT=FALSE;MODE=Oracle;INIT=create " +
                            "schema if not exists " +
                            "schema_a\\;create schema if not exists schema_b;" +
                            "DB_CLOSE_DELAY=-1;")
                    .addScript("sql/provPlan/createTable.sql")
                    .addScript("sql/provPlan/insertData.sql")
                    .addScript("sql/provPlan/insertSpecRel.sql")
                    .build();

रेफरी: http://www.h2database.com/html/features.html#execute_sql_on_connection




Related