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.mzph.cn/news/152255.shtml

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

相关文章

免疫微环境、免疫细胞浸润分析、免疫功能分析

Immune MicroEnvironment、Immune infiltration analysis 01.肿瘤免疫微环境&#xff08;TIME&#xff09;02.TIME的免疫特点和相关机制03.检测免疫浸润的工具3.1.基于marker gene的ssGSEA富集分析的免疫分析方法3.1.1.xCELL3.1.2.MCP-counter3.1.3.ESTIMATE3.1.4.3.1.5.ssGSEA…

在Linux系统中创建虚拟串口

在Linux系统中创建虚拟串口 文章目录 在Linux系统中创建虚拟串口1、虚拟串口介绍2、使用 socat创建虚拟串行端口2.1 安装socat2.2 创建简单的虚拟串口2.3 创建指定波特率的串行端口 有多种方法可以在 Linux 中创建虚拟串口来测试和调试串行通信协议。 在本文中&#xff0c;我们…

基于饥饿游戏算法优化概率神经网络PNN的分类预测 - 附代码

基于饥饿游戏算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于饥饿游戏算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于饥饿游戏优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

代码随想录二刷 | 链表 | 基础知识

代码随想录二刷 &#xff5c; 链表&#xff5c; 基础知识 链表链表的类型单链表双链表循环链表 链表的存储方式链表的定义链表的操作删除节点增加节点 性能分析 链表 链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是…

<MySQL> 如何合理的设计数据库中的表?数据表设计的三种关系

目录 一、表的设计 二、一对一关系 三、一对多关系 四、多对多关系 一、表的设计 数据库设计就是根据需要创建出符合需求的表。 首先根据需求找到体系中的关键实体对象&#xff0c;通常每个实体对象都会有一个表&#xff0c;表中包含了这个实体的相关属性。 再理清楚实体对…

数据结构【DS】树与二叉树的应用

哈夫曼树 树的带权路径长度最小的二叉树WPL 路径长度【边数】 * 结点权值n个叶结点的哈夫曼树共有 2n-1 个结点 哈夫曼树的任意非叶结点的左右子树交换后仍是哈夫曼树对同一组权值&#xff0c;可能存在不同构的多棵哈夫曼树&#xff0c;但树的带权路径长度最小且唯一哈夫曼树…

Java贪吃蛇小游戏

Java贪吃蛇小游戏 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.LinkedList; import java.util.Random;publi…

C语言——操作符详解

前言&#xff1a;这篇文章主要讲解一下C语言中常见的操作符的使用&#xff0c;做一下整理&#xff0c;便于日后回顾&#xff0c;同时也希望能帮助到大家。 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4dd;CSDN主页 愚润求学 &#x1f304;每日鸡汤&#xff1a;念…

大数据的技术运用:探索未来的无限可能性

随着科技的不断进步和社会信息的快速增长&#xff0c;大数据已成为一个热门话题。本文将探讨大数据技术在多个领域的应用&#xff0c;以及它对未来的影响和无限可能性。 导言 在过去的几十年里&#xff0c;大数据技术取得了惊人的发展&#xff0c;它不仅改变了企业的经营方式&a…

大模型LLM 在线量化;GPTQ\AWQ量化

1、大模型LLM 在线量化 参考:https://www.cnblogs.com/bruceleely/p/17348782.html ##8bit model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).quantize(8).half(

开源与闭源:数字化时代的创新与合作之争

引言&#xff1a; 在数字化时代&#xff0c;开源与闭源软件的辩论一直是技术界的热门话题。特斯拉CEO马斯克最近公开表示&#xff0c;OpenAI不应该闭源&#xff0c;而自家首款聊天机器人将开源。这一表态引发了广泛的讨论和思考。本文将从不同角度探讨开源与闭源软件的优势与劣…

odoo17 web.assets_web.min.js 赏析

odoo17 web.assets_web.min.js 赏析 前文说到&#xff0c;odoo17的前端js做了大量裁剪优化&#xff0c;最终打包成了一个文件assets.web.js 稍微看一下这个文件的结构 web.assets_web.min.js 行 1: /* /web/static/src/module_loader.js */ 行 173: /* /web/static/…

数据中心标签的重要性

布线标签的实施是为了为用户今后的维护和管理带来最大的 便利&#xff0c;提高其管理水平和工作效率&#xff0c;减少网络配置时间&#xff0c;标签标识系统包括三个方面:标识分类及定义,标签和建立文档。 标签、标识的分类有哪些? 数据中心内的每一电缆、光缆、配线设备、端…

解决网络编程中的EOF违反协议问题:requests库与SSL错误案例分析

1. 问题背景 近期&#xff0c;一个用户在使用requests库进行网络编程时遭遇到了一个不寻常的问题&#xff0c;涉及SSL错误&#xff0c;并提示错误消息为SSLError(SSLEOFError(8, uEOF occurred in violation of protocol (_ssl.c:661)),))。该用户表示已经采取了多种方法来解决…

109.firefly-extboot的生成脚本

内核版本&#xff1a; 4.4.194 在firefly的sdk 2.5.1c及以后的版本都是extboot.img&#xff08;对应表中的extboot&#xff09; 但是之前的并不是&#xff0c;而且一个boot.img&#xff0c;&#xff08;对应表中rkboot&#xff09; rkboot的生成方法可以参考解决linux5.15编…

【数据机构】最小生成树(prim算法)

一.引例 在n个城市之间建设通信网络&#xff0c;至少需要架设多少条通信线路&#xff1f;如果每两个城市之间架设通信线路的造价是不一样的&#xff0c;那么如何设计才能使得总造价最小&#xff1f; 二.生成树与生成森林 生成树&#xff1a;n个顶点的连通图G的生成树是包含G中…

解决 vite 4 开发环境和生产环境打包后空白、配置axios跨域、nginx代理本地后端接口问题

1、解决打包本地无法访问空白 首先是pnpm build 打包后直接在dist访问&#xff0c;是访问不了的&#xff0c;需要开启服务 终端输入 npm install -g serve 然后再输入 serve -s dist 就可以访问了 但要保证 路由模式是&#xff1a;createWebHashHistory 和vite.conffig.j…

【MySQL】MVCC(多版本并发控制)详解

MVCC MVCC概述 MVCC&#xff0c;全称 Multi-Version Concurrency Control &#xff0c;即多版本并发控制。MVCC 是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff0c;在编程语言中实现事务内存。 MVCC就是在ReadCommitte…

docker 容器

目录 简介 什么是docker 容器和镜像&#xff08;contalners&#xff09; 容器和虚拟机 了解docker三个重要概念 &#xff08;1&#xff09;image镜像 &#xff08;2&#xff09;container容器 &#xff08;3&#xff09;repostory仓库 docker的简单使用 安装docker …

车载通信架构 —— 新车载总线类型下(以太网)的通信架构

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…