2010-08-09 18 views
6

हमने जावा एप्लिकेशन बनाया है जो नेटबीन्स आईडीई में जावाडीबी डेटाबेस का उपयोग करता है। हम प्रोग्राम को हर बार जांचना चाहते हैं कि डेटाबेस की टेबल पहले ही बनाई जा चुकी है, और अन्यथा उन्हें बनाते हैं। हम यह कैसे करते हैं? जावाडीबी - जांच रहा है कि कोई डेटाबेस मौजूद है

thanx
+0

संभावित डुप्लिकेट [कैसे जांचें कि डेटाबेस एचएसक्ल्डब/डर्बी में मौजूद है या नहीं?] (Http://stackoverflow.com/questions/3801773/how-to-check-if-a-डेटा-exists-in-hsqldb -derby) – Raedwald

+0

लहसुन का जवाब सही है, केवल मैं जोड़ता हूं कि तालिका की खोज ऊपरी मामले में होनी चाहिए क्योंकि आपने अपनी तालिका को लोअरकेस में बनाया है, मेटाडेटा अपरकेस में है –

उत्तर

6

मैं का उपयोग करें:

DatabaseMetaData metas; 
ResultSet tables; 
Statement stat; 

m_connexion = DriverManager.getConnection("jdbc:derby:mybase;create=true"); 
metas = m_connexion.getMetaData(); 
stat = m_connexion.createStatement(); 
tables = metas.getTables(m_connexion.getCatalog(), null, "MYTABLE", null); 
if (!tables.next()) 
    stat.execute(
    "CREATE TABLE APP.MYTABLE (" // etc. 

... और यह मेरे लिए काम नहीं है।

0

टेबल के अस्तित्व के लिए इस्ताओ का परीक्षण डर्बी के साथ मेरे लिए काम नहीं करता था। तालिका पहले कभी नहीं बनाई गई थी, भले ही तालिका कभी नहीं मिली थी। आपको क्या लगता है कि आपको TABLE_SCHEM को "एपीपी" के रूप में निर्दिष्ट करना है, फिर तालिका प्रकार को "तालिका" शामिल करने के लिए सेट करें। हो सकता है कि पिछले संस्करणों में काम नल का उपयोग कर रहा हो, लेकिन डर्बी 10.12 का उपयोग करने से इन पैरामीटर के साथ पहले बनाई गई तालिका नहीं मिलती है।

Connection conn = DriverManager.getConnection(DB_PROTO + DB_NAME + ";create=true"); 
DatabaseMetaData metas = conn.getMetaData(); 
ResultSet tables = metas.getTables(conn.getCatalog(), "APP", TABLE_NODES, new String[] {"TABLE"}); 
if (!tables.next()) { 
    Statement stat = conn.createStatement(); 
    stat.execute("create table " + ... 

उम्मीद है कि यह किसी और की मदद करेगा।

संबंधित मुद्दे