Sqllite

Sqllite是什么?

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。

就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

为什么用Sqllite?

  1. 不需要一个单独的服务器进程或操作的系统(无服务器的)。

  2. SQLite 不需要配置,这意味着不需要安装或管理。

  3. 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。

  4. SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。

  5. SQLite 是自给自足的,这意味着不需要任何外部的依赖。

  6. SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。

  7. SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。

  8. SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。

  9. 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

03-25
### 关于 SQLite 数据库的使用指南 SQLite 是一种轻量级的关系型数据库管理系统,适合嵌入式应用和小型项目开发。以下是关于 SQLite 的一些核心概念及其使用的详细介绍。 #### 1. 权限管理的特点 SQLite 的权限管理功能相对简单,不像 MySQL 或 PostgreSQL 那样提供复杂的用户角色管理和细粒度访问控制。因此,在需要高级权限管理的应用场景中,建议评估是否切换至更强大的数据库系统[^1]。 #### 2. 版本控制与集成 对于 SQLite 数据库文件,可以将其纳入版本控制系统(如 Git),以便跟踪其结构变化或初始化脚本的历史记录。通过这种方式,团队成员能够协同维护数据库模式并减少冲突风险。 #### 3. 基础操作流程 当完成一系列数据库读写请求之后,务必调用 `sqlite3_close()` 函数释放资源以及断开连接。这是确保程序稳定性的重要一步。下面是一个简单的 C 语言代码片段展示如何安全地关闭 SQLite 连接: ```c #include <sqlite3.h> void close_database(sqlite3 *db) { if (sqlite3_close(db) != SQLITE_OK) { fprintf(stderr, "Database did not close cleanly\n"); } } ``` 上述函数定义了一个用于优雅退出的方法,并检查是否存在错误情况发生[^2]。 #### 4. React Native 中预加载 SQLite 数据库实例化过程 如果目标是在移动应用程序框架比如 React Native 下快速启动带有预先填充数据集的服务,则可以通过如下方式实现: - 构建一个名为 `your_mobile.db` 的 SQLite 文件,其中包含了所有的基础资料条目; - 接着按照官方文档指示将此 `.db` 资源复制粘贴进入 Android/iOS 平台特定目录路径之下[^3]; 这样做的好处在于减少了首次运行期间网络延迟或者冗长的数据迁移时间消耗。 --- ### 提供一段 Python 示例演示基本 CRUD 功能 这里给出一段基于 Python 的例子来说明怎样执行常见的增删改查命令: ```python import sqlite3 def create_connection(): conn = None; try: conn = sqlite3.connect('example.db') # 创建一个新的数据库 example.db 如果它不存在的话 print(f'Successfully connected to the database.') except Error as e: print(e) return conn def insert_data(conn): sql_insert_query = """ INSERT INTO projects(name,start_date,end_date) VALUES(?,?,?) """ project_details = ('My First Project', '2023-09-01', '2023-12-31') cur = conn.cursor() cur.execute(sql_insert_query, project_details) conn.commit() if __name__ == '__main__': connection = create_connection() if connection is not None: insert_data(connection) connection.close() ``` 以上脚本展示了建立链接、插入新纪录的过程最后记得总是要结束会话以防止内存泄漏等问题出现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值