2013-04-01 4 views
5

से डीबी स्टेटमेंट निष्पादित करें मैं अपने आवेदन के लिए एम्बेडेड अपाचे डर्बी का उपयोग करता हूं। मैं createdb.sql नामक एक SQL स्क्रिप्ट है कि एक डेटाबेस में सभी तालिकाओं बनाता है और प्रारंभिक डेटा के साथ भरता है, उदाहरण के लिए है:फ़ाइल

SET SCHEMA APP; 


CREATE TABLE study (
    study_id bigint not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), 
    name  varchar(50) not null, 
    note   varchar(1000) DEFAULT '',  
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    deleted boolean DEFAULT false, 
    UNIQUE(name), 
    CONSTRAINT primary_key PRIMARY KEY (study_id) 

); 

INSERT INTO "APP"."STUDY" (NAME) VALUES ('default'); 



CREATE TABLE img (
    img_id bigint not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), 
    filename varchar(200) not null, 
    path  varchar(300) not null, 
    flipped boolean DEFAULT false, 
    type  smallint not null, 
    note varchar(1000) DEFAULT '', 
    created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (img_id)  
); 

ALTER TABLE img ADD COLUMN dpix integer DEFAULT -1; 
ALTER TABLE img ADD COLUMN dpiy integer DEFAULT -1; 

सवाल यह है कि मैं इस फ़ाइल को लोड और सभी जावा का उपयोग कर स्टेटमेंट्स को निष्पादित करते है ? मैं अलग-अलग फ़ंक्शन की कोशिश कर रहा हूं लेकिन वे सभी काम नहीं करते हैं। उदाहरण के लिए,

Statement s = conn.createStatement(); 
s.execute(sqlStr); 

या

Statement s = conn.createStatement(); 
s.executeUpdate(sqlStr); 

जहां sqlStr एक स्ट्रिंग createdb.sql फ़ाइल की सामग्री युक्त चर रहा है। मैं स्क्रिप्ट में निहित सभी SQL आदेशों को कैसे निष्पादित करूं ताकि मैं सभी तालिकाओं को बना सकूं और उन्हें प्रारंभ कर सकूं? बीटीडब्ल्यू, एसक्यूएल स्क्रिप्ट काम करता है, क्योंकि मैं इसे मैन्युअल बनाने और डेटाबेस को प्रारंभ करने के लिए SQuirreL SQL क्लाइंट में उपयोग करता हूं। अब मैं इसे अपने आवेदन के भीतर से करना चाहता हूं।

उत्तर

3

नीचे दिए गए ट्यूटोरियल एक mysql स्क्रिप्ट (.sql फ़ाइल) को चलाने का तरीका बताते हैं। आपको क्या करना है कि mysql डीबी कनेक्शन को डर्बी डीबी में बदलें और चलाएं। यह काम करेगा।

http://www.mkyong.com/jdbc/how-to-run-a-mysql-script-using-java/

यहाँ किसी भी तीसरे पक्ष पुस्तकालय का उपयोग किए बिना एक MySQL स्क्रिप्ट चलाने के लिए एक वैकल्पिक तरीका है।

http://coreyhulen.wordpress.com/2010/04/07/run-a-sql-script-for-mysql-using-java/

+0

कश्मीर, THX: इस संबंधित सवाल देखें। इसने मुझे एसक्यूएलएसटी स्ट्रिंग को कई स्ट्रिंग्स में विभाजित करने का विचार दिया ";" और फिर प्रत्येक कमांड के लिए लूप के लिए निष्पादन कथन चलाएं। – Marcin

+0

आप लूपिंग के लिए क्यों जाते हैं? बस स्क्रिप्टरनर को एसक्यूएल फ़ाइल दें। – Dhinakar

+0

मैं बाहरी पुस्तकालयों या स्क्रिप्ट का उपयोग नहीं करना चाहता हूं। यही एकमात्र कारण है। – Marcin

0

डर्बी के साथ, आप आम तौर पर 'ij' उपकरण यह करने के लिए उपयोग करें:

http://db.apache.org/derby/docs/10.9/tools/ttoolsij98878.html

आप अपने खुद के, की एक जावा प्रोग्राम के बजाय से यह करने के लिए चाहते हैं कमांड लाइन, आप ij की 'रनस्क्रिप्ट' सुविधा का अध्ययन करना चाहेंगे;

How to run sql scripts in order to update a Derby schema from java code?