package gj.database;
import java.sql.*;
/**
* Author: areful<TR>
* Date: 2019/5/10
* <p>
* gradle dependency:<TR>
* //https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc<TR>
* compile group: 'org.xerial', name: 'sqlite-jdbc', version: '3.27.2.1'
*/
public class SQLiteSample {
public static void main(String[] args) throws Exception {
Connection conn = null;
ResultSet rs = null;
PreparedStatement prep = null;
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:sqlite_sample.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (id integer, name, occupation);");
prep = conn.prepareStatement("insert into people values (?, ?, ?);");
prep.setInt(1, 1);
prep.setString(2, "Gandhi");
prep.setString(3, "politics");
prep.addBatch();
prep.setInt(1, 2);
prep.setString(2, "Turing");
prep.setString(3, "computers");
prep.addBatch();
prep.setInt(1, 3);
prep.setString(2, "Wittgenstein");
prep.setString(3, "smartypants");
prep.addBatch();
conn.setAutoCommit(false);
prep.executeBatch();
conn.setAutoCommit(true);
rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("id = " + rs.getInt("id"));
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
}
//分頁時,可以使用ResultSet來完成分頁rs.absolute(100),也可以sql語句中完成分頁select ... limit 100,10;
//下面是釋放數據庫連接的過程,使用數據庫連接池時不應該釋放連接,而是將連接重新放到連接池中。
//以代理的方式生成Connection的對象,調用Connection的close方法時將Connection加入到線程池中。線程池中加入的是Connection的代理對象即可。
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} finally {
if (prep != null) {
try {
prep.close();
} finally {
if (conn != null) {
conn.close();
}
}
}
}
}
}
}
}
使用SQLiteDatabaseBrowserPortable查看新建的數據庫結構:

附SQLiteDatabaseBrowserPortable下載地址:
https://sqlitebrowser.org/blog/portableapp-for-3-11-2-release-now-available
