2013-04-01 17 views
5

Uygulamam için gömülü Apache derby kullanıyorum. Bir veritabanındaki tüm tabloları oluşturur ve ilk verilerle doldurur createdb.sql denilen bir SQL komut dosyası, örneğin var:db ifadelerini dosyadan çalıştırın

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; 

soru ben bu dosyayı yüklemek ve java kullanan tüm ifadeleri çalıştırmak nasıl olduğunu ? Farklı bir işlev deniyorum ama hepsi işe yaramıyor. Örneğin,

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

veya sqlstrcreatedb.sql dosyasının içeriğini içeren bir String değişkendir

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

. Tüm tabloları oluşturabilmem ve bunları başlatabilmem için komut dosyasında bulunan tüm SQL komutlarını nasıl uygularım? Btw, SQL komut dosyası, veritabanı oluşturmak ve başlatmak için SQuirreL SQL Client içinde kullandığım gibi çalışır. Şimdi uygulamamın içinden yapmak istiyorum.

cevap

3

Aşağıdaki eğitimde, mysql komut dosyasının (.sql dosyası) nasıl çalıştırılacağı anlatılmaktadır. Yapmanız gereken şey, mysql db bağlantısını derby db olarak değiştirip çalıştırmaktır. Çalışacak.

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

İşte herhangi bir üçüncü taraf kitaplığı kullanmadan MySQL komut dosyasını çalıştırmak için alternatif bir yoldur.

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

+0

k, thx. Bu bana sqlStr dizesini ";" ve sonra her komut için döngü için execute deyimini çalıştırın. – Marcin

+0

neden döngü için gidiyorsun? Sadece sql dosyasını scriptrunner'a verin. – Dhinakar

+0

Dış kütüphaneleri veya komut dosyalarını kullanmak istemiyorum. Tek sebep budur. – Marcin