Sqlite帮助类
package com.abc.helper; /** * Created by xxx. */ import com.alibaba.fastjson.JSONArray; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * sqlite帮助类,直接创建该类示例,并调用相应的借口即可对sqlite数据库进行操作 * * 本类基于 sqlite jdbc v56 * * @author xxx */ public class SqliteHelper { final static Logger logger = LoggerFactory.getLogger(SqliteHelper.class); private Connection connection; private Statement statement; // private ResultSet resultSet; private String dbFilePath; /** * 构造函数 * @param dbFilePath sqlite db 文件路径 * @throws ClassNotFoundException * @throws SQLException */ public SqliteHelper(String dbFilePath) throws ClassNotFoundException, SQLException { this.dbFilePath = dbFilePath; connection = getConnection(dbFilePath); } /** * 获取数据库连接 * @param dbFilePath db文件路径 * @return 数据库连接 * @throws ClassNotFoundException * @throws SQLException */ public Connection getConnection(String dbFilePath) throws ClassNotFoundException, SQLException { Connection conn = null; Class.forName("org.sqlite.JDBC"); conn = DriverManager.getConnection("jdbc:sqlite:" + dbFilePath); return conn; } /** * 执行sql查询 * @param sql * @return 数据集ResultSet * @throws SQLException * @throws ClassNotFoundException */ public ResultSet selectResultSet(String sql) throws SQLException, ClassNotFoundException{ return getStatement().executeQuery(sql); } /** * 执行sql查询 * @param sql * @return 列表List * @throws SQLException * @throws ClassNotFoundException */ public List selectList(String sql) throws SQLException, ClassNotFoundException{ ResultSet rs = selectResultSet(sql); return convertList(rs); } /** * 执行sql查询 * @param sql * @return json列表[{},{},...{}] * @throws SQLException * @throws ClassNotFoundException */ public String selectJsonArray(String sql) throws SQLException, ClassNotFoundException{ List list = selectList(sql); return JSONArray.toJSONString(list); } /* 数据集ResultRes转列表List */ private static List convertList(ResultSet rs) throws SQLException{ List list = new ArrayList(); ResultSetMetaData md = rs.getMetaData();//获取键名 int columnCount = md.getColumnCount();//获取行的数量 while (rs.next()) { Map rowData = new HashMap();//声明Map for (int i = 1; i <= columnCount; i++) { rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值 } list.add(rowData); } return list; } /** * 执行数据库更新sql语句 * @param sql * @return 更新行数 * @throws SQLException * @throws ClassNotFoundException */ public int executeUpdate(String sql) throws SQLException, ClassNotFoundException { try { int c = getStatement().executeUpdate(sql); return c; } finally { destroyed(); } } /** * 执行多个sql更新语句 * @param sqls * @throws SQLException * @throws ClassNotFoundException */ public void executeUpdate(String...sqls) throws SQLException, ClassNotFoundException { try { for (String sql : sqls) { getStatement().executeUpdate(sql); } } finally { destroyed(); } } /** * 执行数据库更新 sql List * @param sqls sql列表 * @throws SQLException * @throws ClassNotFoundException */ public void executeUpdate(List<String> sqls) throws SQLException, ClassNotFoundException { try { for (String sql : sqls) { getStatement().executeUpdate(sql); } } finally { destroyed(); } } private Connection getConnection() throws ClassNotFoundException, SQLException { if (null == connection) connection = getConnection(dbFilePath); return connection; } private Statement getStatement() throws SQLException, ClassNotFoundException { if (null == statement) statement = getConnection().createStatement(); return statement; } /** * 数据库资源关闭和释放 */ public void destroyed() { try { if (null != connection) { connection.close(); connection = null; } if (null != statement) { statement.close(); statement = null; } // if (null != resultSet) { // resultSet.close(); // resultSet = null; // } } catch (SQLException e) { logger.error("Sqlite数据库关闭时异常", e); } } }
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号