package com.tale.init; import com.blade.Blade; import com.blade.kit.IOKit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; /** * Sqlite 数据库操作 * <p> * Created by biezhi on 2017/3/4. */ public final class SqliteJdbc { private static final Logger LOGGER = LoggerFactory.getLogger(SqliteJdbc.class); private SqliteJdbc() { } public static final String DB_NAME = "tale.db"; public static String DB_PATH = SqliteJdbc.class.getClassLoader().getResource("").getPath() + DB_NAME; public static String DB_SRC = "jdbc:sqlite://" + DB_PATH; static { try { Class.forName("org.sqlite.JDBC"); } catch (Exception e) { e.printStackTrace(); } } /** * 测试连接并导入数据库 */ public static void importSql() { try { if(Blade.$().isDev()){ DB_PATH = System.getProperty("user.dir") + "/" + DB_NAME; DB_SRC = "jdbc:sqlite://" + DB_PATH; } Connection con = DriverManager.getConnection(DB_SRC); Statement statement = con.createStatement(); ResultSet rs = statement.executeQuery("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='t_options'"); int count = rs.getInt(1); if (count == 0) { String cp = SqliteJdbc.class.getClassLoader().getResource("").getPath(); InputStreamReader isr = new InputStreamReader(new FileInputStream(cp + "schema.sql"), "UTF-8"); String sql = IOKit.toString(isr); statement.executeUpdate(sql); LOGGER.info("initialize import database."); } rs.close(); statement.close(); con.close(); LOGGER.info("database path is: {}", DB_PATH); } catch (Exception e) { LOGGER.error("initialize database fail", e); } } }