java 连接 Sqlite 数据库工具类

一、简介

sqlite3非常小,轻量级,就几百K大小;不需要用户名,密码,直接就可以对数据库进行操作。

二、安装sqlite3

1.安装sqlite3

sudo apt-get install sqlite3

2.安装库文件

sudo apt-get install libsqlite3-dev

不安装库文件的话,直接在C语言中包含头文件#include<sqlite3.h>的话,会报错,

三、sqlite3简单用法

1.查看版本信息:sqlite3 -version
2.进入sqlite3:直接输入sqlite3回车即可,和进入python一样

3.退出sqlite3:.quit(sqlite比较独特的是,很多命令前都加了一个’.’)

4.创建数据库:sqlite3 databasename.db(注意直接在shell中输入这条语句,不要在sqlite3环境中输入)

创建的数据库名后面一般加上.db,它会在当前目录下创建一个数据库文件databasename.db

好像创建数据库之后,得查看一下或者干点别的,不能直接.quit退出,不然会发现没有建立数据库文件。

5.查看数据库列表:.databases
6.删除数据库:直接把目录下的数据库文件删除就可以了。

7.选择数据库:.open +数据库名
这里如果数据库存在的话,就选择这个数据库;如果数据库不存在的话,系统会创建一个数据库test.db,然后选中这个数据库。

8.创建表(需要先选中数据库),和mysql中差不多

CREATE TABLE Student(

ID INT PRIMARY KEY NOT NULL,

NAME VARCHAR(20),

AGE INT);
9.查看数据库中有哪些表:.tables

10.查看表的字段信息:.schema+表名

11.删除指定的表:drop table +表名

12.其他增删查改操作和mysql中一致。例如查找:

select * from student where ID=1;

四、java调用sqlite3
1.maven添加依赖

  <dependency>
	  <groupId>sqlite</groupId>
	  <artifactId>sqlite-jdbc</artifactId>
	  <version>3.18.0</version>
  </dependency>

2.创建数据库连接池

 //初始化连接池参数
 private static DruidDataSource dbPoll;
    static {
        try {
            String installPath = System.getProperty("user.dir");
            StringBuffer config = new StringBuffer();
            config.append("jdbc:sqlite:");
            config.append(installPath);
            config.append(System.getProperty("file.separator"));
            config.append(PropertiesUtil.readByKey("sqlite.database"));
            dbPoll = new DruidDataSource();
            dbPoll.setDriverClassName("org.sqlite.JDBC");
            dbPoll.setUrl(config.toString());
            dbPoll.setInitialSize(Integer.parseInt(PropertiesUtil.readByKey("sqlite.initialSize")));
            dbPoll.setMinIdle(Integer.parseInt(PropertiesUtil.readByKey("sqlite.minIdle")));
            dbPoll.setMaxActive(Integer.parseInt(PropertiesUtil.readByKey("sqlite.maxActive")));
            dbPoll.setValidationQuery(PropertiesUtil.readByKey("sqlite.sqlvalidationQuery"));
        } catch (Exception e) {
            log.error(Arrays.asList(e.getStackTrace()));
        }
    }
    //获取连接
        public static DruidPooledConnection getConn() throws Exception {
        return dbPoll.getConnection();
    }

//进行crud

public static int save(String sql, Object... objs)  {
        int result = 0;
        DruidPooledConnection conn = null;
        PreparedStatement ptmt = null;
        try {
            conn = getConn();
            ptmt = conn.prepareStatement(sql);
            for (int i = 0; i < objs.length; i++) {
                ptmt.setObject(i + 1, objs[i]);
            }
            result = ptmt.executeUpdate();
        } catch (Exception e) {
            log.error(Arrays.asList(e.getStackTrace()));
             e.printStackTrace();
            //throw new Exception(e);
        } finally {
            freeConn(conn, ptmt);
        }
        return result;
    }
public static int update(String sql, Object... objs)  {
        int result = 0;
        DruidPooledConnection conn = null;
        PreparedStatement ptmt = null;
        try {
            conn = getConn();
            ptmt = conn.prepareStatement(sql);
            if (objs != null) {
                for (int i = 0; i < objs.length; i++) {
                    ptmt.setObject(i + 1, objs[i]);
                }
            }
            result = ptmt.executeUpdate();
        } catch (Exception e) {
            log.error(Arrays.asList(e.getStackTrace()));
            e.printStackTrace();
           // throw new Exception(e);
        } finally {
            freeConn(conn, ptmt);
        }
        return result;
    }
 public static List<Map<String, Object>> query(String sql, Object ... objs)  {
        List<Map<String, Object>> list = null;
        DruidPooledConnection conn = null;
        PreparedStatement ptmt = null;
        try {
            conn = getConn();
            ptmt = conn.prepareStatement(sql);

            int index = 1;
            for (Object o : objs) {
                ptmt.setObject(index++, o);
            }
            ResultSet rs = ptmt.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            String[] keys = new String[rsmd.getColumnCount()];
            for (int m = 1; m <= rsmd.getColumnCount(); m++) {
                keys[m - 1] = rsmd.getColumnLabel(m);
            }
            list = new ArrayList<Map<String, Object>>();
            while (rs.next()) {
                Map<String, Object> map = new HashMap<String, Object>();
                for (int n = 0; n < keys.length; n++) {
                    map.put(keys[n], rs.getObject(keys[n]));
                }
                list.add(map);
            }

        } catch (Exception e) {
            log.error(Arrays.asList(e.getStackTrace()));
            e.printStackTrace();
            //throw new Exception(e);
        } finally {
            freeConn(conn, ptmt);
        }
        return list;
    }
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值