A JDBC driver for SQLite. It comes in two flavours, a 100% Pure Java driver based on NestedVM or a native JNI library. Binaries are provided for Windows and Mac OS X.
目前Java環境下的sqlite擴展有好幾個,但是其中比較完善、而且更新很快的就要數SQLiteJDBC了, 而且它的封裝也讓人感覺比較的舒服,文檔也很全面。
使用方法:
下載對應你的開發平台的二進制包. 解開壓縮包並把下面的兩個文件拷貝到你的應用程序當中 去:
sqlitejdbc.jar
sqlitejdbc.dll (or libsqlitejdbc.so or libsqlitejdbc.jnilib)
在你的代碼中引用這個驅動:
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:filename");
// ... use the database ...
conn.close();
然後運行你的程序的時候在classpath中加上驅動的JAR文件,同時在librarypath中加上C的庫文件. 例如:
java -cp sqlitejdbc.jar -Djava.library.path=. yourclass
瞧瞧,就是這麼簡單.
日期和時間的處理:
SQLiteJDBC使用標准所容許的最有效的方法來實現ResultSet.getDate()/getTime() 和 PreparedStatement.setDate()/setTime(), 將時間以毫秒為單位存放在一個64位的長整數當中(UTC通 用協調時間),這是標准的unix時間戳.
只要我們小心的把unix時間戳轉換為SQLite函數使用的格式,這樣就不會和SQLite的標准時間格式相 沖突了, 而且從另一個角度來看使用這種格式存儲時間可以更方便我們在SQLite之外的環境裡使用. 例 如:
prep = conn.prepareStatement("insert into test values (?);");
prep.setDate(1, new Date(1000));
prep.executeUpdate();
rs = stat.executeQuery ("select * from test;");
rs.getString(1) == "1000";
上面的這個例子中時間是以unix時間戳來儲存的. 你可以用datetime()和strftime() 函數來把時間 轉換為標准的SQLite格式:
prep = conn.prepareStatement(
"insert into test values datetime(?, 'unixepoch');");
prep.setDate(1, new Date(987654321));
prep.executeUpdate ();
rs = stat.executeQuery("select * from test;");
rs.getString(1) = "2001-04-19 04:25:21";
rs = stat.executeQuery("select strftime('%s', col1) from test;");
rs.getDate(1) == new Date(987654321);
編譯:
下載源代碼包、解壓縮,設置好你的$JAVA_HOME環境變量然後輸入:
$ make
更多的細節可以參考源代碼包中readme的文件.
下載:
http://www.sqlite.com.cn/Upfiles/source/sqlitejdbc-v033-nested.tgz
http://www.sqlite.com.cn/Upfiles/source/sqlitejdbc-v033-src.tgz
http://www.sqlite.com.cn/Upfiles/source/sqlitejdbc-v033-Win-i386.tgz