嵌入式數(shù)據(jù)庫(kù)在Java中的應(yīng)用(2)

字號(hào):

2. 編譯第三方Java接口
    SQLite源代碼是C,而且官方網(wǎng)站上只提供了C和Tcl語(yǔ)言的接口。為了應(yīng)用Java接口,要采用第三方的接口驅(qū)程,可在參考鏈接三中找到這個(gè)Java接口程序。這個(gè)接口提供了兩種連接SQLite 的方式:一是直接用JNI技術(shù)調(diào)用SQLite的C語(yǔ)言接口,這種方式要求開(kāi)發(fā)人員要對(duì)SQLite本身的API也有一定的了解。在第二種方式中,接口程序?qū)崿F(xiàn)了Java標(biāo)準(zhǔn)規(guī)范的JDBC接口,這樣開(kāi)發(fā)人員只要對(duì)JDBC有了解就可以了。
    下面介紹在Windows系統(tǒng)MS VC6環(huán)境中編譯SQLite Java接口(同時(shí)包括JNI和JDBC兩個(gè)接口)的過(guò)程。如果你對(duì)C語(yǔ)言編譯的設(shè)置很熟悉,可以跳這這段介紹。
    第一步先把SQLite源代碼編譯成Lib靜態(tài)庫(kù)文件。具體的步驟可以直接應(yīng)用下面參考鏈接中提供的MS VC6工作區(qū)文件,其中有一個(gè)編譯SQLite到靜態(tài)庫(kù)的設(shè)置。編譯成功后得到SQLite.lib文件。
    第二步要建立一個(gè)新的VC DLL項(xiàng)目,然后和上面介紹的Berkeley DB在編譯Java本地化接口的設(shè)置一樣,在VC的Tools菜單Options選項(xiàng)中指定JNI.H等JNI編譯所要的頭文件位置。同時(shí)還要指定sqlite.h頭文件位置,這個(gè)文件是在生成SQLite靜態(tài)庫(kù)的時(shí)候自動(dòng)生成的,可以在SQLite.lib文件所在的工作區(qū)目錄下面找到它,例如加入的路徑為C:\sqlite\msvc6。然后在Project菜單的setting選項(xiàng)設(shè)置Link到SQLite.lib庫(kù)文件,并再次在Tools菜單中Options指定SQLite.lib的查找路徑。注意有些情況下可能要設(shè)置予編譯選項(xiàng)HAVE_SQLITE_COMPILE以便使用SQLite中VM的一些功能。編譯成功后可得到Sqlite_jni.dll文件。
    第三方接口庫(kù)中的Java代碼包含JNI接口和多個(gè)版本的JDBC接口程序,可根據(jù)你的JRE的版本選擇相應(yīng)的JDBC程序。編譯這些Java代碼的過(guò)程這里就不做敘述了。
    編譯后的Java類包加上前面得到的Sqlite_jni.dll文件,組成了SQLite的Java接口庫(kù),在應(yīng)用Java語(yǔ)言調(diào)用JDBC或JNI接口時(shí),都是通過(guò)應(yīng)用Java的本地化技術(shù)調(diào)用Sqlite_jni.dll文件,完成對(duì)SQLite數(shù)據(jù)庫(kù)的操作。
    3. 應(yīng)用JNI直接調(diào)用SQLite功能
    下面這段代碼演示如何應(yīng)用JNI接口操作SQLite。可以看到Database類的exec()方法是執(zhí)行SQL語(yǔ)句的關(guān)鍵:
    Database db = new Database();
    try {
     //打開(kāi)數(shù)據(jù)庫(kù)
     db.open("c:\\temp\\mydata.slt", 0666);
     db.interrupt();
     db.busy_timeout(1000);
     db.busy_handler(null);
     db.exec("create table account (name varchar(10),gale boolean)",result);
     db.exec("insert into account values('steve','m')", result);
     db.exec("select * from account",result);
     //關(guān)閉數(shù)據(jù)庫(kù)
     db.close();
    } catch (Exception e) {
     e.printStackTrace();
    }
    4. 應(yīng)用JDBC連接SQLite
    用"SQLite.JDBCDriver"作為JDBC的驅(qū)動(dòng)程序類名。連接JDBC的URL格式為jdbc:sqlite:/path。這里的path為指定到SQLite數(shù)據(jù)庫(kù)文件的路徑,例如:
    jdbc:sqlite://dirA/dirB/dbfile
    jdbc:sqlite://DRIVE:/dirA/dirB/dbfile
    jdbc:sqlite://COMPUTERNAME/shareA/dirB/dbfile