在Java中使用SQLite数据库

下载最新的 Sqlite Jdbc 驱动程序jar文件,并添加到Java工程的class路径下;

二、使用

以 sqlite Jdbc 驱动版本为 sqlitejdbc-v56.jar 为例

SqliteHelper.java 类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * sqlite帮助类,直接创建该类示例,并调用相应的借口即可对sqlite数据库进行操作
 *
 * 本类基于 sqlite jdbc v56
 *
 * @author haoqipeng
 */
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 sql select 语句
    * @param rse 结果集处理类对象
    * @return 查询结果
    * @throws SQLException
    * @throws ClassNotFoundException
    */
    public <T> T executeQuery(String sql, ResultSetExtractor<T> rse) throws SQLException, ClassNotFoundException {
        try {
            resultSet = getStatement().executeQuery(sql);
            T rs = rse.extractData(resultSet);
            return rs;
        } finally {
            destroyed();
        }
    }
   
    /**
    * 执行select查询,返回结果列表
    *
    * @param sql sql select 语句
    * @param rm 结果集的行数据处理类对象
    * @return
    * @throws SQLException
    * @throws ClassNotFoundException
    */
    public <T> List<T> executeQuery(String sql, RowMapper<T> rm) throws SQLException, ClassNotFoundException {
        List<T> rsList = new ArrayList<T>();
        try {
            resultSet = getStatement().executeQuery(sql);
            while (resultSet.next()) {
                rsList.add(rm.mapRow(resultSet, resultSet.getRow()));
            }
        } finally {
            destroyed();
        }
        return rsList;
    }
   
    /**
    * 执行数据库更新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();
        }
       
    }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8ae780dc567c003426a3f44d91b19cee.html