SQLite 安装和 Java 使用教程

SQLite是一个C语言库,它实现了一个小型、快速、自包含、高可靠性、功能齐全的SQL数据库引擎。SQLite是世界上使用最多的数据库引擎。SQLite内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。

SQLite文件格式稳定、跨平台、向后兼容,开发人员承诺在2050年保持这种格式。SQLite数据库文件通常用作在系统之间传输丰富内容的容器,以及数据的长期存档格式。目前有超过1万亿个SQLite数据库在积极使用

SQLite 官网:https://www.sqlite.org/index.html

目录

1、安装 SQLite

2、新建数据库

3、新建表

4、Java 操作 SQLite

4.1、普通类型存储

4.2、二进制类型存储


1、安装 SQLite

官网下载 SQLite

下载地址:https://www.sqlite.org/download.html

 根据自己的电脑系统选择

下载后将其解压

解压

2、新建数据库

双击打开 sqlite3.exe

弹出命令行窗体

新建数据库命令

.open test.db

新建名称是 test 的数据库

新建完成后,会在当前目录下生成 test.db 的文件,数据库创建完成

3、新建表

新建表可以使用命令

CREATE TABLE user (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,name TEXT
);

 新建 user 表,有 id 和 name 字段,id是主键自增,name是 TEXT 字符串文本类型

SQLite 的类型有

类型说明
NULL空值
INTEGER带符号的整型
REAL浮点数字
TEXT字符串
BLOB二进制对象

 除此之外可以使用 Navicat 连接建表

选择 SQLite

连接名随意

选择数据库文件,点击确定即可

新建表

新建表,有3个字段, id, name,price

新建完成

4、Java 操作 SQLite

新建 maven 项目 sqlite-learn

引入 sqlite-jdbc 依赖

<dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.41.2.1</version>
</dependency>

sqlite-learn 项目 pom 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wsjzzcbq</groupId><artifactId>sqlite-learn</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.41.2.1</version></dependency></dependencies><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>11</source><target>11</target></configuration></plugin></plugins></build></project>

4.1、普通类型存储

增删改查代码

package com.wsjzzcbq;import java.sql.*;/*** SqliteDemo** @author wsjz* @date 2023/11/17*/
public class SqliteDemo {public static void main(String[] args) throws ClassNotFoundException, SQLException {Class.forName("org.sqlite.JDBC");//SQLite 数据库文件String dbFile = "D:\\tmp\\sql\\sqlite-tools-win-x64-3440000\\test.db";String url = "jdbc:sqlite:" + dbFile;Connection conn = DriverManager.getConnection(url);//添加insert(conn);//查询select(conn);//修改update(conn);//删除delete(conn);conn.close();}private static void select(Connection connection) throws SQLException {String sql = "select * from user";Statement statement = connection.createStatement();ResultSet rs = statement.executeQuery(sql);while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");System.out.println(id);System.out.println(name);}rs.close();statement.close();}private static void insert(Connection connection) throws SQLException {String sql = "insert into user( name) values('小丽')";Statement stat = connection.createStatement();stat.executeUpdate(sql);stat.close();}private static void update(Connection connection) throws SQLException {String sql = "update user set name = ? where id = ?";PreparedStatement ps = connection.prepareStatement(sql);ps.setObject(1, "小雪花");ps.setObject(2, 1);ps.executeUpdate();ps.close();}private static void delete(Connection connection) throws SQLException {String sql = "delete from user where id = ?";PreparedStatement ps = connection.prepareStatement(sql);ps.setObject(1, 1);ps.executeUpdate();ps.close();}}

运行测试

测试添加

测试修改

测试删除

shop 表代码

package com.wsjzzcbq;import java.sql.*;/*** SqliteDemo2** @author wsjz* @date 2023/11/17*/
public class SqliteDemo2 {public static void main(String[] args) throws ClassNotFoundException, SQLException {Class.forName("org.sqlite.JDBC");//SQLite 数据库文件String dbFile = "D:\\tmp\\sql\\sqlite-tools-win-x64-3440000\\test.db";String url = "jdbc:sqlite:" + dbFile;Connection conn = DriverManager.getConnection(url);//添加insert(conn);//查询select(conn);conn.close();}private static void insert(Connection connection) throws SQLException {String sql = "insert into shop(name, price) values('水浒传', 20)";Statement stat = connection.createStatement();stat.executeUpdate(sql);stat.close();}private static void select(Connection connection) throws SQLException {String sql = "select * from shop";Statement statement = connection.createStatement();ResultSet rs = statement.executeQuery(sql);while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");double price = rs.getDouble("price");System.out.println(id);System.out.println(name);System.out.println(price);}rs.close();statement.close();}}

运行测试

4.2、二进制类型存储

储存二进制图片文件

package com.wsjzzcbq;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.*;/*** SqliteDemo3** @author wsjz* @date 2023/11/17*/
public class SqliteDemo3 {public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {Class.forName("org.sqlite.JDBC");//SQLite 数据库文件String dbFile = "D:\\tmp\\sql\\sqlite-tools-win-x64-3440000\\test.db";String url = "jdbc:sqlite:" + dbFile;Connection conn = DriverManager.getConnection(url);//新建表createTable(conn);//添加insert(conn);//查询select(conn);conn.close();}private static void createTable(Connection connection) throws SQLException {String sql = "CREATE TABLE IF NOT EXISTS  img (name TEXT, image BLOB)";Statement statement = connection.createStatement();statement.executeUpdate(sql);statement.close();}private static void insert(Connection connection) throws SQLException, IOException {String sql = "insert into img(name, image) values(?, ?)";PreparedStatement ps = connection.prepareStatement(sql);ps.setObject(1, "怀素自叙帖");String filePath = "D:\\tmp\\img\\huaisu.png";byte[] bytes = Files.readAllBytes(Paths.get(filePath));InputStream inputStream = Files.newInputStream(Paths.get(filePath));//添加图片文件ps.setBinaryStream(2, inputStream, bytes.length);ps.executeUpdate();ps.close();}private static void select(Connection connection) throws SQLException, IOException {String sql = "select * from img";Statement statement = connection.createStatement();ResultSet rs = statement.executeQuery(sql);while (rs.next()) {//获取nameString name = rs.getString("name");System.out.println(name);//获取图片文件InputStream inputStream = rs.getBinaryStream("image");String filePath = "D:\\tmp\\img\\huaisu2.png";Files.copy(inputStream, Paths.get(filePath));}rs.close();statement.close();}
}

测试运行

至此完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/195362.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构【DS】特殊二叉树

完全二叉树 叶子结点只能出现在最下层和次下层, 最下层的叶子结点集中在树的左部完全二叉树中, 度为1的节点数 0个或者1个【计算时可以用这个快速计算, 配合&#x1d45b;0&#x1d45b;21】若n为奇数&#xff0c;则分支节点每个都有左右孩子&#xff1b;若n为偶数&#xff0…

腾讯云轻量数据库是什么?性能如何?费用价格说明

腾讯云轻量数据库测评&#xff0c;轻量数据库100%兼容MySQL 5.7和8.0&#xff0c;腾讯云提供1C1G20GB、1C1G40GB、1C2G80GB、2C4G120GB、2C8G240GB五种规格轻量数据库&#xff0c;腾讯云百科txybk.com分享腾讯云轻量数据库测评、轻量数据库详细介绍、特性、配置价格和常见问题解…

Web3 分布式存储 IPFS(Web3项目一实战之四)

IPFS是一种分布式文件存储协议,它允许世界各地的计算机存储和服务文件作为一个巨大的对等网络的一部分来存储和服务文件。 世界上任何地方的任何计算机都可以下载IPFS软件并开始托管和提供文件。 如果有人在自己的计算机上运行IPFS,并将文件上传到IPFS网络,那么世界上其他任…

算法通关村第十关-青铜挑战快速排序

大家好我是苏麟,今天带来快速排序 . 快速排序 单边快速排序(lomuto 洛穆托分区方案) 单边循环 (lomuto分区) 要点 : 选择最右侧元素作为基准点j 找比基准点小的&#xff0c;i 找比基准点大的&#xff0c;一旦找到&#xff0c;二者进行交换。 交换时机: 找到小的&#xff0c…

【0到1学习Unity脚本编程】第一人称视角的角色控制器

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;【0…

linux文件IO

文件IO截断 截断对文件的偏移量没有影响。

【Go入门】Web工作方式

【Go入门】 Web工作方式 我们平时浏览网页的时候,会打开浏览器&#xff0c;输入网址后按下回车键&#xff0c;然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后&#xff0c;到底隐藏了些什么呢&#xff1f; 对于普通的上网过程&#xff0c;系统其实是这样做的&…

python-opencv 培训课程笔记(1)

python-opencv 培训课程笔记&#xff08;1&#xff09; 博主参加了一次opencv库的培训课程&#xff0c;把课程所学整理成笔记&#xff0c;供大家学习&#xff0c;第一次课程包括如下内容&#xff1a; 1.读取图像 2.保存图像 3.使用opencv库显示图像 4.读取图像为灰度图像 …

大数据安全 测试

测试1、用户 hive/1.common2.hadoop.fql.comLEXIN.COM 和 nn/1.common2.hadoop.fql.com 分别对 Hive 进行查询 &#xff08;1&#xff09;HDFS 配置 vim /usr/local/fqlhadoop/hadoop/conf/core-site.xml <property><name>hadoop.proxyuser.hive.hosts</name&g…

度加创作工具 演示

度加创作工具 功能图功能测试文比润色测试经验分享测试测试输出测试输出工具地址功能图 功能测试 文比润色测试 经验分享测试 测试输出 在人工智能领域,我们一直在追求一个终极目标:让机器能够像人类一样,能够理解、学习和解决各种复杂问题。而要实现这个目标,我们需要将…

BGP综合实验

一、实验拓扑 二、实验要求 1、AS1中存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能在任何协议中宣告&#xff1b; AS3中存在两个环回&#xff0c;一个地址为192.168.2.0/24&#xff0c;该地址不能在任何协议中宣告&#xff…

10_6 input输入子系统,流程解析

简单分层 应用层 内核层 --------------------------- input handler 数据处理层 driver/input/evdev.c1.和用户空间交互,实现fops2.不知道数据怎么得到的,但是可以把数据上传给用户--------------------------- input core层1.维护上面和下面的两个链表2.为上下两层提供接口--…