SQLite初学

SQLite基础学习

一、介绍

1.1 什么是SQLite

  • SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
  • 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

1.2 为什么要用 SQLite

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX和 Windows中运行。

1.3 目标

  • 在JAVA工程中使用SQLite
  • 多个工程共用一个SQLite库

二、准备

2.1 sqlite下载

  • 下载地址:https://www.sqlite.org/download.html
  • 文件名称:
    sqlite-dll-win64-x64-3350500.zip(sqlite-dll-win32-x86-3350500.zip)
    sqlite-tools-win32-x86-3350500.zip

2.2 sqlite-JDBC驱动

  • 驱动:sqlite-jdbc-3.8.6.jar
  • 地址:我是通过maven库下载的

三 、实例

导入sqlite-jdbc-3.8.6.jar包到工程中

3.1 单一工程测试

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class SqliteJDBCTest {
	public static void main(String[] args){  
		try {
			Class.forName("org.sqlite.JDBC");
		    Connection conn = DriverManager.getConnection("jdbc:sqlite:D:/workutils/SQLite/space/test.db");
		    Statement stat = conn.createStatement();
		    stat.executeUpdate("drop table if exists test;");
		    stat.executeUpdate("create table test(name varchar(20), occupation int);");	//创建表
		    stat.executeUpdate("insert into test values('aaa',111);");									//插入数据  
		    stat.executeUpdate("insert into test values('bbb',222);");  
		    ResultSet rs = stat.executeQuery("select * from test;");									//查询
		    String json = JSON.toJSONString(resultSetToJson(rs));
		    System.out.println(json);
		    rs.close();
		    conn.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * ResultSet转list
	 * @param rs
	 * @return
	 * @throws SQLException
	 */
	private static JSONArray resultSetToJson(ResultSet rs) throws SQLException{
	      // json数组
	      JSONArray array = new JSONArray();
	      // 获取列数
	      ResultSetMetaData metaData = rs.getMetaData();
	      int columnCount = metaData.getColumnCount();
	      // 遍历ResultSet中的每条数据
	      while (rs.next()) {
	           JSONObject jsonObj = new JSONObject();
	           // 遍历每一列
	           for (int i = 1; i <= columnCount; i++) {
	               String columnName =metaData.getColumnLabel(i);
	               String value = rs.getString(columnName);
	               jsonObj.put(columnName, value);
	        } 
	        array.add(jsonObj); 
	   }
	  return array;
	}
}

输出结果:[{"occupation":"111","name":"aaa"},{"occupation":"222","name":"bbb"}]

3.2 调用已有表测试

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class Test {
	public static void main(String[] args){  
		try {
			Class.forName("org.sqlite.JDBC");
		    Connection conn = DriverManager.getConnection("jdbc:sqlite:D:/workutils/SQLite/space/test.db");
		    Statement stat = conn.createStatement();
		    ResultSet rs = stat.executeQuery("select * from test;");
		    String json = JSON.toJSONString(resultSetToJson(rs));
		    System.out.println(json);
		    rs.close();
		    conn.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private static JSONArray resultSetToJson(ResultSet rs) throws SQLException{
	      // json数组
	      JSONArray array = new JSONArray();
	      // 获取列数
	      ResultSetMetaData metaData = rs.getMetaData();
	      int columnCount = metaData.getColumnCount();
	      // 遍历ResultSet中的每条数据
	      while (rs.next()) {
	           JSONObject jsonObj = new JSONObject();
	           // 遍历每一列
	           for (int i = 1; i <= columnCount; i++) {
	               String columnName =metaData.getColumnLabel(i);
	               String value = rs.getString(columnName);
	               jsonObj.put(columnName, value);
	        } 
	        array.add(jsonObj); 
	   }
	  return array;
	}	
}

输出结果:[{"occupation":"111","name":"aaa"},{"occupation":"222","name":"bbb"}]
特别说明:

“jdbc:sqlite:test.db”:会在工程的工作空间工程目录下创建test.db文件
“jdbc:sqlite:D:/workutils/SQLite/space/test.db”:自定义文件地址

如果工程中数据库文件地址不一致,访问的就不是同一个数据库表,达不到公用目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值