SQLite数据库01:Java操作SQLite数据库

准备数据库

  • 创建一个txt文件,命名为test.db(SQLite数据库本质就是一个单一的文件
  • 在SQLite Expert工具中打开test.db数据库,并指定编码为UTF-8(通过SQLite Expert工具新建数据库也是可以的)
  • 选中test数据库,选中右侧【SQL】的Tab选项,在面输入创建数据表的SQL语句,然后执行
create table company -- 在数据库test下创建company表
(
 id INT PRIMARY KEY NOT NULL,        -- 员工id,主键,不能为空 
 number char(8) UNIQUE NOT NULL,     -- 员工编号,不能为空,不能重复
 name TEXT NOT NULL,                 -- 员工名称,不能为空
 age INT NOT NULL,                   -- 员工年龄
 address CHAR(50),                   -- 员工家庭住址
 salary  DOUBLE                      -- 员工薪水
);
  • 此时test.db数据中的company数据表的结构就已经完成了,也可以通过Java代码发送SQL语句来创建数据表(推荐使用SQLite Expert工具来创建表结构
// 加载驱动
Class.forName("org.sqlite.JDBC"); 
// 得到数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
// 准备SQL模板
String sql = "create table company("
		+ " id INT PRIMARY KEY NOT NULL,"
		+ " number char(8) UNIQUE NOT NULL,"
		+ " name TEXT NOT NULL,"
		+ " age INT NOT NULL,"
		+ " address CHAR(50),"
		+ " salary  DOUBLE)";
// 得到SQL语句执行器
PreparedStatement pstmt = conn.prepareStatement(sql);
// 创建数据表
pstmt.execute();

准备SQLite的JDBC驱动

  • 去SQLite官方网站下载驱动jar包,例如sqlite-jdbc-3.30.1.jar

在Java工程中使用SQLite数据库

  • 将SQLite驱动jar包拷贝到目标工程中
  • 将数据库test.db拷贝到工程的src目录下
    SQLite数据库01:Java操作SQLite数据库_第1张图片

编写测试代码

得到数据库连接

package com.ycom.sqlite.test;

import java.sql.Connection;
import java.sql.DriverManager;

public class Main {
	public static void main(String[] args) throws Exception {
		// 加载驱动
		 Class.forName("org.sqlite.JDBC"); 
		// 得到数据库连接对象 -- 数据库文件不存在则创建之
		Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
		
		System.out.println(conn); // org.sqlite.jdbc4.JDBC4Connection@40f0c
	}
}
  • 如果数据库文件不存在,则创建之
  • 加载驱动的代码是可以省略的,因为META-INF/services/java.sql.Driver文件中已经定义了驱动的名称,JDBC自己可以找到
    SQLite数据库01:Java操作SQLite数据库_第2张图片

CRUD:向数据表中插入记录

  • 向表中插入两条记录
// 加载驱动
Class.forName("org.sqlite.JDBC"); 
// 得到数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
// 准备SQL模板
String sql = "INSERT INTO company(ID,NUMBER, NAME,AGE,ADDRESS,SALARY) VALUES(?,?,?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
// 给模板参数赋值
// 第一条记录
pstmt.setInt(1, 1);
pstmt.setString(2, "b1407003");
pstmt.setString(3, "ycom");
pstmt.setInt(4, 18);
pstmt.setString(5, "California");
pstmt.setDouble(6, 20000.00);
pstmt.executeUpdate();
// 第二条记录
pstmt.setInt(1, 2);
pstmt.setString(2, "b1407015");
pstmt.setString(3, ".com");
pstmt.setInt(4, 18);
pstmt.setString(5, "Texas");
pstmt.setDouble(6, 18000.00);
pstmt.executeUpdate();
// 关闭资源: 倒序关闭
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();

CURD:查询所有记录

// 加载驱动
Class.forName("org.sqlite.JDBC"); 
// 得到数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
// 准备SQL模板
String sql = "select * from company";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
	int id = rs.getInt(1);
	String number = rs.getString(2);
	String name = rs.getString(3);
	int age = rs.getInt(4);
	String address = rs.getString(5);
	double salary = rs.getDouble(6);
	System.out.println(id + "," + number + "," + name + "," + age + "," + address + "," + salary);
}
// 关闭资源: 倒序关闭
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
  • 得到查询结果
    在这里插入图片描述

JDBC操作SQLite的URL

  • 如果数据库是在工程的src根目录下,那么JDBC的URL格式为:jdbc:sqlite:mydatabase.db
  • 绝对路径:
    – windows:jdbc:sqlite:driver:/dira/dirb/mydatabase.db(driver是盘符:C、D)
    – linux:jdbc:sqlite:/home/ycom/db/mydatabase.db(根目录/的家目录home

你可能感兴趣的:(SQLite)