Sqllite是什么?
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
为什么用Sqllite?
-
不需要一个单独的服务器进程或操作的系统(无服务器的)。
-
SQLite 不需要配置,这意味着不需要安装或管理。
-
一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
-
SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
-
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
-
SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
-
SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
-
SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
-
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。
Sqllite怎么用?
我这里是SpringBoot与Sqllite的整合
1,添加依赖
<!--sqllite-->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.23.1</version>
</dependency>
2,连接数据库
它连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。
import java.sql.*;
public class SQLiteJDBC{
public static void main( String args[] ) {
Connection c = null;
try {
//加载驱动
Class.forName("org.sqlite.JDBC");
// 创建连接对象
c = DriverManager.getConnection("jdbc:sqlite:test.db");
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("Opened database successfully");
}
}
2,增删改查
try {
//创建会话
stmt = c.createStatement();
//建表
String sql = "CREATE TABLE COMPANY " +
"(ID INT PRIMARY KEY NOT NULL," +
" NAME TEXT NOT NULL, " +
" AGE INT NOT NULL, " +
" ADDRESS CHAR(50), " +
" SALARY REAL)";
stmt.executeUpdate(sql);
//增
String sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (1, 'Paul', 32, 'California', 20000.00 );";
stmt.executeUpdate(sql);
//查
ResultSet rs = stmt.executeQuery( "SELECT * FROM COMPANY;" );
while ( rs.next() ) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
String address = rs.getString("address");
float salary = rs.getFloat("salary");
System.out.println( "ID = " + id );
System.out.println( "NAME = " + name );
System.out.println( "AGE = " + age );
System.out.println( "ADDRESS = " + address );
System.out.println( "SALARY = " + salary );
System.out.println();
}
rs.close();
//改
String sql = "UPDATE COMPANY set SALARY = 25000.00 where ID=1;";
stmt.executeUpdate(sql);
c.commit();
//删
String sql = "DELETE from COMPANY where ID=2;";
stmt.executeUpdate(sql);
c.commit();
} catch (SQLException e) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
3,关闭连接
try {
stmt.close();
c.close();
} catch (SQLException e) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
Sqllite遇到的问题?
1,提供一个SqlLite可视化工具:
链接:https://pan.baidu.com/s/14KiFvoQmTKZVlVydEDeLkg
提取码:yci2
1,关于插入value是不是int及特殊字符的问题:
1,插入非int如果出现问题,打印你插入的sql看是否value有引号,如果没有
在插入时value外面再加引号,报错加转义字符 示例:
String insertsql = "INSERT INTO aaa VALUES (" + sbrj.getId() + ",\"" + sbrj.getZcbi() + "\",\"" + sbrj.getRjlxcn() +
"\",\"" + sbrj.getRjmc() + "\",\"" + sbrj.getCskfscn() + "\"," + 0 + "," + 0 + "," + 0 + "," + null + ");"
2,如果有特殊字符:
https://blog.csdn.net/forlong401/article/details/11749829