侧边栏壁纸
博主头像
栗子 博主等级

行动起来,活在当下

  • 累计撰写 15 篇文章
  • 累计创建 11 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

sqlite工具类

albert_luo
2024-10-23 / 0 评论 / 0 点赞 / 8 阅读 / 0 字
温馨提示:
本文最后更新于2024-10-23,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

sqlite工具类 一系列常用方法

条件删除


    /**
     * 删除数据
     *
     * @param connection 数据库连接
     * @param tableName  表名
     * @param condition  删除条件,例如 "id = 1"
     * @return 删除的行数
     */
    public static int delete(Connection connection, String tableName, String condition) {
        String sql = "DELETE FROM " + tableName + " WHERE " + condition;
        try (Statement stmt = connection.createStatement()) {
            return stmt.executeUpdate(sql);
        } catch (SQLException e) {
            log.error("sqlite删除数据失败:" + e.getMessage());
        }
        return 0;
    }

查询单个值

  /**
     * 查询单个值
     *
     * @param connection 数据库连接
     * @param sql        查询的SQL语句
     * @return 返回结果
     */
    public static Object querySingleValue(Connection connection, String sql) {
        Statement stmt = null;
        ResultSet resultSet = null;
        try {
            stmt = connection.createStatement();
            resultSet = stmt.executeQuery(sql);
            if (resultSet.next()) {
                return resultSet.getObject(1);
            }
        } catch (SQLException e) {
            log.error("sqlite数据库表获取单个值失败:" + e.getMessage());
        } finally {
            try {
                if (resultSet != null) resultSet.close();
                if (stmt != null) stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

批量插入数据

    /**
     * 批量插入数据
     *
     * @param connection 数据库连接
     * @param tableName  表名
     * @param data       数据列表,每个Map表示一行数据,key为列名,value为列值
     * @return 插入的行数
     */
    public static int batchInsert(Connection connection, String tableName, List<Map<String, Object>> data) {
        if (data == null || data.isEmpty()) {
            return 0;
        }
        int count = 0;
        String columns = String.join(", ", data.get(0).keySet());
        String placeholders = String.join(", ", data.get(0).keySet().stream().map(k -> "?").toArray(String[]::new));
        String sql = "INSERT INTO " + tableName + " (" + columns + ") VALUES (" + placeholders + ")";
        try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
            connection.setAutoCommit(false);
            for (Map<String, Object> row : data) {
                int index = 1;
                for (String key : row.keySet()) {
                    pstmt.setObject(index++, row.get(key));
                }
                pstmt.addBatch();
                count++;
            }
            pstmt.executeBatch();
            connection.commit();
        } catch (SQLException e) {
            log.error("sqlite批量插入数据失败:" + e.getMessage());
            try {
                connection.rollback();
            } catch (SQLException ex) {
                log.error("sqlite批量插入数据回滚失败:" + ex.getMessage());
            }
        }
        return count;
    }

检查表

    /**
     * @return
     * @description: 检查表是否存在
     */
    public static Boolean checkTableExists(Connection connection, String tableName) {
        Statement stmt;
        String querySql = "select count(*)  from sqlite_master where type='table' and name = '" + tableName + "';";
        try {
            stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery(querySql);
            int count = 0;
            while (rs.next()) {
                count = rs.getInt(1);
            }
            rs.close();
            stmt.close();
            if (count > 0) {
                return true;
            }
        } catch (Exception e) {
            log.error("sqlite判断表结构是否存在异常:" + e.getMessage());
        }
        return false;
    }

关键字分页查询

   /**
     * context 上下文
     * pageCount 查询多少条数据
     * page 第几页,默认为1
     * s 想要匹配的关键字
     */
    public static List<HashMap<String, Object>> getSearchHistory(String dbName, int pageCount, int page, String keyword) {
        List<HashMap<String, Object>> resultList = new ArrayList<>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            connection = getConnection(dbName);

            String sql = "SELECT uid, fileName, date FROM shares " +
                    "WHERE fileName LIKE ? OR uid LIKE ? " +
                    "ORDER BY date DESC " +
                    "LIMIT ? OFFSET ?";

            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "%" + keyword + "%");
            preparedStatement.setString(2, "%" + keyword + "%");
            preparedStatement.setInt(3, pageCount);
            preparedStatement.setInt(4, (page - 1) * pageCount);

            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                HashMap<String, Object> resultMap = new HashMap<>();
                resultMap.put("uid", resultSet.getString("uid"));
                resultMap.put("fileName", resultSet.getString("fileName"));
                // 将Date类型转换为所需的格式,这里以毫秒为单位给出示例
                resultMap.put("date", resultSet.getDate("date").getTime());

                resultList.add(resultMap);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (resultSet != null) resultSet.close();
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return resultList;
    }

动态实体模糊分页查询sqlite数据库

 /**
     * @param dbName
     * @param entityType
     * @param pageCount
     * @param page
     * @param keyword
     * @return java.util.List<java.util.HashMap < java.lang.String, java.lang.Object>>
     * @description TODO 动态实体模糊分页查询sqlite数据库
     * @author Albert_Luo
     * @date 2024/6/25 23:42
     */
    public static <T> List<HashMap<String, Object>> dynamicSearch(String dbName, Class<T> entityType, int pageCount, int page, String keyword, String tableName) {
        List<HashMap<String, Object>> resultList = new ArrayList<>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        ResultSet resultSet = null;

        try {
            connection = getConnection(dbName);

            StringBuilder columnNames = new StringBuilder();
            StringBuilder whereClauses = new StringBuilder();

            // 使用反射获取实体类的所有字段名
            Field[] fields = entityType.getDeclaredFields();
            for (Field field : fields) {
                String columnName = field.getName(); // 假设数据库列名与字段名相同
                columnNames.append(columnName).append(", ");
                whereClauses.append(columnName).append(" LIKE ? OR ");
            }

            // 移除最后一个多余的" OR "
            if (whereClauses.length() > 0) {
                whereClauses.setLength(whereClauses.length() - 4); // 去掉最后的 " OR "
            }

            String sql = "SELECT " + columnNames.substring(0, columnNames.length() - 2) + " FROM " + tableName +
                    " WHERE " + whereClauses.toString() +
                    " ORDER BY id DESC LIMIT ? OFFSET ?";

            System.out.println("sql = " + sql);
            preparedStatement = connection.prepareStatement(sql);

// 绑定参数
            if (keyword != null) {
                for (int i = 0; i <= fields.length; i++) {
                    preparedStatement.setString(i + 1, "%" + keyword + "%");
                }
            } else {
                // 如果 keyword 为空,将所有搜索条件设置为匹配所有数据
                for (int i = 0; i <= fields.length; i++) {
                    preparedStatement.setString(i + 1, "%");
                }
            }
            preparedStatement.setInt(fields.length + 1, pageCount); // 正确设置pageCount
            preparedStatement.setInt(fields.length + 2, (page - 1) * pageCount); // 正确设置分页偏移量

            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                HashMap<String, Object> resultMap = new HashMap<>();
                for (Field field : fields) {
                    String columnName = field.getName();
                    if ("date".equals(columnName)) {
                        resultMap.put(columnName, resultSet.getTimestamp(columnName).getTime());
                    } else {
                        resultMap.put(columnName, resultSet.getObject(columnName));
                    }
                }
                resultList.add(resultMap);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (resultSet != null) resultSet.close();
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return resultList;
    }

其他一些操作都在总和里,这里就不一一列出了。

总和

package cn.org.lizi.util.db;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.sqlite.SQLiteConfig;

import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author albert_luo@lizipro.cn
 * @version 1.0
 * @description: TODO sqlite工具类 一系列常用方法
 * @date 2024/6/23 12:56
 */
public class SqliteUtils {
    private static final Logger log = LoggerFactory.getLogger(SqliteUtils.class);
    @Value("${sqlite.url}")
    private static String dbUrl;

    /**
     * @return
     * @description: 获取连接
     */
    public static Connection getConnection(String dbName) {
        Connection connection = null;
        try {
            Class.forName("org.sqlite.JDBC");
            SQLiteConfig config = new SQLiteConfig();
            config.setBusyTimeout(6000);
            if (dbUrl == null) {
                dbUrl = "fileSystem";
            }
            connection = DriverManager.getConnection("jdbc:sqlite:" + dbUrl + dbName, config.toProperties());
        } catch (Exception e) {
            e.printStackTrace();
            log.error(dbName + "sqlite数据库初始化失败:" + e.getMessage());
        }
        return connection;
    }

    /**
     * @return
     * @description: 检查表是否存在
     */
    public static Boolean checkTableExists(Connection connection, String tableName) {
        Statement stmt;
        String querySql = "select count(*)  from sqlite_master where type='table' and name = '" + tableName + "';";
        try {
            stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery(querySql);
            int count = 0;
            while (rs.next()) {
                count = rs.getInt(1);
            }
            rs.close();
            stmt.close();
            if (count > 0) {
                return true;
            }
        } catch (Exception e) {
            log.error("sqlite判断表结构是否存在异常:" + e.getMessage());
        }
        return false;
    }


    /**
     * @return
     * @description: 获取数量
     */
    public static Integer executeCount(Connection connection, String sql) {
        Statement stmt;
        try {
            stmt = connection.createStatement();
            ResultSet resultSet = stmt.executeQuery(sql);
            int count = 0;
            while (resultSet.next()) {
                count = resultSet.getInt(1);
            }
            resultSet.close();
            stmt.close();
            return count;
        } catch (Exception e) {
            log.error("sqlite数据库表获取表信息失败:" + e.getMessage());
        }
        return 0;
    }


    public static List<String> getColNames(Connection connection, String tableName) {
        List<String> colNames = new ArrayList<>();
        Statement st = null;
        ResultSet rs = null;
        try {
            st = connection.createStatement();
            rs = st.executeQuery("select * from " + tableName);
            ResultSetMetaData metaData = rs.getMetaData();
            int count = metaData.getColumnCount();
            for (int i = 1; i <= count; i++) {
                colNames.add(metaData.getColumnName(i));
            }
        } catch (SQLException e) {
            log.error("sqlite数据库表获取表信息失败:" + e.getMessage());
        } finally {
            try {
                rs.close();
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return colNames;
    }

    /**
     * 执行sql查询
     *
     * @param sql sql select 语句
     * @return 查询结果
     */
    public static List<Object> queryAll(Connection connection, String sql) {
        List<String> colNames = new ArrayList<>();
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sql);
            ResultSetMetaData metaData = resultSet.getMetaData();
            int count = metaData.getColumnCount();
            for (int i = 1; i <= count; i++) {
                colNames.add(metaData.getColumnName(i));
            }
            // 将数据存储到数据中
            List<Object> rsList = new ArrayList<Object>();
            Map<String, Object> perMap;
            while (resultSet.next()) {
                perMap = new HashMap<String, Object>();
                for (String columnName : colNames) {
                    // 获取该列对应的值
                    Object value = resultSet.getObject(columnName);
                    perMap.put(columnName, value);
                }
                rsList.add(perMap);
            }
            return rsList;
        } catch (SQLException e) {
            log.error("sqlite数据库表获取表信息失败:" + e.getMessage());
        } finally {
            try {
                if (null != resultSet) {
                    resultSet.close();
                }
                if (null != statement) {
                    statement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;
    }


    /**
     * @return
     * @description: 创建表
     */
    public static Boolean createTable(Connection connection, String sql) {
        Statement stmt;
        try {
            stmt = connection.createStatement();
            stmt.executeUpdate(sql);
            stmt.close();
        } catch (Exception e) {
            try {
                log.error("sqlite数据库表创建失败:" + e.getMessage() + ",url:" + connection.getMetaData().getURL());
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            return false;
        }
        return true;
    }

    public static Boolean executeUpdateSql(Connection connection, String sql) {
        Statement stmt;
        try {
            stmt = connection.createStatement();
            stmt.executeUpdate(sql);
            stmt.close();
        } catch (Exception e) {
            try {
                log.error("sqlite数据库执行sql语句失败:" + e.getMessage() + ",url:" + connection.getMetaData().getURL());
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            return false;
        }
        return true;
    }


    public static Integer insertOrUpdate(Connection connection, String sql) {
        Statement stmt = null;
        int returns = 0;
        try {
            connection.setAutoCommit(false);
            stmt = connection.createStatement();
            returns = stmt.executeUpdate(sql);
            connection.commit();
            stmt.close();
            return returns;
        } catch (Exception e) {
            try {
                connection.commit();
                if (!isNullOrEmpty(stmt)) {
                    stmt.close();
                }
                log.error("sqlite数据库执行失败:" + e.getMessage() + ",url:" + connection.getMetaData().getURL());
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            return returns;
        }
    }


    /**
     * 批量插入数据
     *
     * @param connection 数据库连接
     * @param tableName  表名
     * @param data       数据列表,每个Map表示一行数据,key为列名,value为列值
     * @return 插入的行数
     */
    public static int batchInsert(Connection connection, String tableName, List<Map<String, Object>> data) {
        if (data == null || data.isEmpty()) {
            return 0;
        }
        int count = 0;
        String columns = String.join(", ", data.get(0).keySet());
        String placeholders = String.join(", ", data.get(0).keySet().stream().map(k -> "?").toArray(String[]::new));
        String sql = "INSERT INTO " + tableName + " (" + columns + ") VALUES (" + placeholders + ")";
        try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
            connection.setAutoCommit(false);
            for (Map<String, Object> row : data) {
                int index = 1;
                for (String key : row.keySet()) {
                    pstmt.setObject(index++, row.get(key));
                }
                pstmt.addBatch();
                count++;
            }
            pstmt.executeBatch();
            connection.commit();
        } catch (SQLException e) {
            log.error("sqlite批量插入数据失败:" + e.getMessage());
            try {
                connection.rollback();
            } catch (SQLException ex) {
                log.error("sqlite批量插入数据回滚失败:" + ex.getMessage());
            }
        }
        return count;
    }

    /**
     * @return
     * @description: 关闭数据库
     */
    public static Boolean closeConnection(Connection connection) {
        try {
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
            log.error("sqlite数据库关闭失败:" + e.getMessage());
            return false;
        }
        return true;
    }


    /**
     * 查询单行记录
     *
     * @param connection 数据库连接
     * @param sql        查询的SQL语句
     * @return 返回结果
     */
    public static Map<String, Object> querySingleRow(Connection connection, String sql) {
        List<Object> resultList = queryAll(connection, sql);
        if (resultList != null && !resultList.isEmpty()) {
            return (Map<String, Object>) resultList.get(0);
        }
        return null;
    }

    /**
     * 查询单个值
     *
     * @param connection 数据库连接
     * @param sql        查询的SQL语句
     * @return 返回结果
     */
    public static Object querySingleValue(Connection connection, String sql) {
        Statement stmt = null;
        ResultSet resultSet = null;
        try {
            stmt = connection.createStatement();
            resultSet = stmt.executeQuery(sql);
            if (resultSet.next()) {
                return resultSet.getObject(1);
            }
        } catch (SQLException e) {
            log.error("sqlite数据库表获取单个值失败:" + e.getMessage());
        } finally {
            try {
                if (resultSet != null) resultSet.close();
                if (stmt != null) stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /**
     * 删除数据
     *
     * @param connection 数据库连接
     * @param tableName  表名
     * @param condition  删除条件,例如 "id = 1"
     * @return 删除的行数
     */
    public static int delete(Connection connection, String tableName, String condition) {
        String sql = "DELETE FROM " + tableName + " WHERE " + condition;
        try (Statement stmt = connection.createStatement()) {
            return stmt.executeUpdate(sql);
        } catch (SQLException e) {
            log.error("sqlite删除数据失败:" + e.getMessage());
        }
        return 0;
    }

    /**
     * 更新数据
     *
     * @param connection 数据库连接
     * @param tableName  表名
     * @param data       更新的数据,key为列名,value为列值
     * @param condition  更新条件,例如 "id = 1"
     * @return 更新的行数
     */
    public static int update(Connection connection, String tableName, Map<String, Object> data, String condition) {
        if (data == null || data.isEmpty()) {
            return 0;
        }
        StringBuilder sql = new StringBuilder("UPDATE " + tableName + " SET ");
        for (String key : data.keySet()) {
            sql.append(key).append(" = ?, ");
        }
        sql.delete(sql.length() - 2, sql.length());
        sql.append(" WHERE ").append(condition);
        try (PreparedStatement pstmt = connection.prepareStatement(sql.toString())) {
            int index = 1;
            for (String key : data.keySet()) {
                pstmt.setObject(index++, data.get(key));
            }
            return pstmt.executeUpdate();
        } catch (SQLException e) {
            log.error("sqlite更新数据失败:" + e.getMessage());
        }
        return 0;
    }

    /**
     * 查询表的所有记录
     *
     * @param connection 数据库连接
     * @param tableName  表名
     * @return 返回查询结果
     */
    public static List<Object> queryAllFromTable(Connection connection, String tableName) {
        return queryAll(connection, "SELECT * FROM " + tableName);
    }

    /**
     * 执行SQL脚本
     *
     * @param connection 数据库连接
     * @param sqlScript  SQL脚本
     * @return 执行是否成功
     */
    public static boolean executeSqlScript(Connection connection, String sqlScript) {
        try (Statement stmt = connection.createStatement()) {
            stmt.execute(sqlScript);
            return true;
        } catch (SQLException e) {
            log.error("sqlite执行SQL脚本失败:" + e.getMessage());
        }
        return false;
    }

    public static boolean isNullOrEmpty(Object obj) {
        if (obj == null) {
            return true;
        }
        return isNullOrEmpty(obj.toString());
    }

    public static void main(String[] args) {
        // 获取数据库连接
        Connection connection = SqliteUtils.getConnection("share.db");

        // 创建测试表
        String createTableSql = "CREATE TABLE IF NOT EXISTS test_table (id INTEGER PRIMARY KEY, name TEXT)";
        SqliteUtils.createTable(connection, createTableSql);

        // 插入测试数据
        List<Map<String, Object>> testData = new ArrayList<>();
        Map<String, Object> row1 = new HashMap<>();
        row1.put("id", 1);
        row1.put("name", "Alice");
        testData.add(row1);

        Map<String, Object> row2 = new HashMap<>();
        row2.put("id", 2);
        row2.put("name", "Bob");
        testData.add(row2);

        SqliteUtils.batchInsert(connection, "test_table", testData);

        // 查询表的所有记录
        List<Object> results = SqliteUtils.queryAllFromTable(connection, "test_table");
        System.out.println(results);
        // 关闭数据库连接
        SqliteUtils.closeConnection(connection);
    }

    /**
     * context 上下文
     * pageCount 查询多少条数据
     * page 第几页,默认为1
     * s 想要匹配的关键字
     */
    public static List<HashMap<String, Object>> getSearchHistory(String dbName, int pageCount, int page, String keyword) {
        List<HashMap<String, Object>> resultList = new ArrayList<>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            connection = getConnection(dbName);

            String sql = "SELECT uid, fileName, date FROM shares " +
                    "WHERE fileName LIKE ? OR uid LIKE ? " +
                    "ORDER BY date DESC " +
                    "LIMIT ? OFFSET ?";

            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "%" + keyword + "%");
            preparedStatement.setString(2, "%" + keyword + "%");
            preparedStatement.setInt(3, pageCount);
            preparedStatement.setInt(4, (page - 1) * pageCount);

            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                HashMap<String, Object> resultMap = new HashMap<>();
                resultMap.put("uid", resultSet.getString("uid"));
                resultMap.put("fileName", resultSet.getString("fileName"));
                // 将Date类型转换为所需的格式,这里以毫秒为单位给出示例
                resultMap.put("date", resultSet.getDate("date").getTime());

                resultList.add(resultMap);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (resultSet != null) resultSet.close();
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return resultList;
    }

    /**
     * @param dbName
     * @param entityType
     * @param pageCount
     * @param page
     * @param keyword
     * @return java.util.List<java.util.HashMap < java.lang.String, java.lang.Object>>
     * @description TODO 动态实体模糊分页查询sqlite数据库
     * @author Albert_Luo
     * @date 2024/6/25 23:42
     */
    public static <T> List<HashMap<String, Object>> dynamicSearch(String dbName, Class<T> entityType, int pageCount, int page, String keyword, String tableName) {
        List<HashMap<String, Object>> resultList = new ArrayList<>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        ResultSet resultSet = null;

        try {
            connection = getConnection(dbName);

            StringBuilder columnNames = new StringBuilder();
            StringBuilder whereClauses = new StringBuilder();

            // 使用反射获取实体类的所有字段名
            Field[] fields = entityType.getDeclaredFields();
            for (Field field : fields) {
                String columnName = field.getName(); // 假设数据库列名与字段名相同
                columnNames.append(columnName).append(", ");
                whereClauses.append(columnName).append(" LIKE ? OR ");
            }

            // 移除最后一个多余的" OR "
            if (whereClauses.length() > 0) {
                whereClauses.setLength(whereClauses.length() - 4); // 去掉最后的 " OR "
            }

            String sql = "SELECT " + columnNames.substring(0, columnNames.length() - 2) + " FROM " + tableName +
                    " WHERE " + whereClauses.toString() +
                    " ORDER BY id DESC LIMIT ? OFFSET ?";

            System.out.println("sql = " + sql);
            preparedStatement = connection.prepareStatement(sql);

// 绑定参数
            if (keyword != null) {
                for (int i = 0; i <= fields.length; i++) {
                    preparedStatement.setString(i + 1, "%" + keyword + "%");
                }
            } else {
                // 如果 keyword 为空,将所有搜索条件设置为匹配所有数据
                for (int i = 0; i <= fields.length; i++) {
                    preparedStatement.setString(i + 1, "%");
                }
            }
            preparedStatement.setInt(fields.length + 1, pageCount); // 正确设置pageCount
            preparedStatement.setInt(fields.length + 2, (page - 1) * pageCount); // 正确设置分页偏移量

            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                HashMap<String, Object> resultMap = new HashMap<>();
                for (Field field : fields) {
                    String columnName = field.getName();
                    if ("date".equals(columnName)) {
                        resultMap.put(columnName, resultSet.getTimestamp(columnName).getTime());
                    } else {
                        resultMap.put(columnName, resultSet.getObject(columnName));
                    }
                }
                resultList.add(resultMap);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (resultSet != null) resultSet.close();
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return resultList;
    }
}

下载SqliteUtils.java

0

评论区