在Java中使用Sqlite数据库
来源:互联网 发布:道琼斯指数行情软件 编辑:程序博客网 时间:2024/05/02 00:02
一、安装
下载最新的 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();}}/** * 执行多个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);}}}
ResltSetExtractor.java 结果集处理类
import java.sql.ResultSet;public interface ResultSetExtractor<T> {public abstract T extractData(ResultSet rs);}
RowMapper.java 结果集行数据处理类
import java.sql.ResultSet;import java.sql.SQLException;public interface RowMapper<T> {public abstract T mapRow(ResultSet rs, int index) throws SQLException;}
SqliteTest.java 测试类
import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;import org.junit.Test;public class SqliteTest {@Testpublic void testHelper() {try {SqliteHelper h = new SqliteHelper("testHelper.db");h.executeUpdate("drop table if exists test;");h.executeUpdate("create table test(name varchar(20));");h.executeUpdate("insert into test values('sqliteHelper test');");List<String> sList = h.executeQuery("select name from test", new RowMapper<String>() {@Overridepublic String mapRow(ResultSet rs, int index)throws SQLException {return rs.getString("name");}});System.out.println(sList.get(0));} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}
测试输出结果
sqliteHelper test
0 0
- 如何在Java中使用SQLite数据库
- 在Java中使用Sqlite数据库
- java中使用sqlite数据库
- java中使用sqlite数据库
- Java中使用Sqlite数据库
- 在.net中使用Sqlite数据库
- 在.net中使用Sqlite数据库
- 在Cocos2d-x中使用SQLite数据库
- 在android中使用SQLite数据库
- idea_在idea中使用sqlite数据库
- 使用sqlite在unity中创建数据库
- QT:在Qt中使用SQLite数据库
- 在Qt中使用SQLite数据库
- 在Qt中使用SQLite数据库
- 如何在Java中访问SQLite数据库
- 在.NET中利用SQLite ADO.NET使用SQLite数据库
- Java 使用 SQLite数据库
- 在VC6.0中使用C++访问sqlite数据库
- 多个Fragment之间的切换
- *hdu1078(记忆化搜索)
- xdotool源代码,需要的伙伴请自取
- JDBC知识 - 马士兵视频教程笔记
- 矩形覆盖
- 在Java中使用Sqlite数据库
- BillBoardView自定义控件广告板轮播
- 针对于分布式平台hadoop取数据的两种方式
- 解决Myeclipse服务器Servers视图下不显示tomcat解决: 1. 关闭Myeclipse 2. 去workspace中删除 com.genuitec.eclipse.ast.deploy
- 二进制中1的个数
- POJ 2492 A Bug's Life 并查集
- win8 vc++编译的程序在XP系统运行报错。一个警告标志(黄色三角形里面一个感叹号)
- 合并两个排序的链表
- 使用U盘+iso镜像文件安装windows10操作系统详细步骤