一、简介
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;
}