跳到主要内容

SQLite

安装

  • 对于 Better SQLite
npm install better-sqlite3
  • 对于 sql.js
npm install sql.js
  • 对于 CapacitorCordovaExpoNativeScriptReact Native,请查看 支持的平台

数据源选项

有关常用数据源选项,请参见 数据源选项

better-sqlite3 数据源选项

  • database - 数据库路径。例如, "mydb.sqlite"
  • enableWAL - 启用 WAL 模式(默认 false)。详见 SQLite WAL 模式
  • fileMustExist - 如果数据库不存在,则抛出错误,不会创建新文件。不影响内存或只读连接(默认 false)。
  • key - SQLCipher 的加密密钥。
  • nativeBinding - 原生插件的相对或绝对路径(better_sqlite3.node)。
  • prepareDatabase - 在 typeorm 使用数据库前调用的函数。你可以在这里访问原生的 better-sqlite3 Database 对象。
  • readonly - 以只读模式打开数据库连接(默认 false)。
  • statementCacheSize - SQLite 语句缓存大小,用于加快查询速度(默认 100)。
  • timeout - 在数据库锁定时,执行查询等待的毫秒数,超过后抛出 SQLITE_BUSY 错误(默认 5000)。
  • verbose - 函数,会在数据库连接执行每条 SQL 语句时调用,接收 SQL 字符串。

sql.js 数据源选项

  • database:待导入的原始 UInt8Array 格式数据库。
  • sqlJsConfig:可选的 sql.js 初始化配置。
  • autoSave:启用自动持久化数据库更改,需要指定 locationautoSaveCallback。设置为 true 时,每次更改都会保存到文件系统(Node.js)或 localStorage/indexedDB(浏览器),如果指定了 location,否则调用 autoSaveCallback
  • autoSaveCallback:启用 autoSave 后,当数据库发生更改时调用的函数。函数接收表示数据库的 UInt8Array
  • location:加载和保存数据库的文件位置。
  • useLocalForage:启用使用 localforage 库,从 indexedDB 异步保存和加载数据库,取代浏览器环境中的同步 local storage 方法。需要将 localforage node 模块添加到项目中,并在页面中导入 localforage.js。

capacitor 数据源选项

  • database - 数据库名称(capacitor-sqlite 会自动添加后缀 SQLite.db
  • driver - capacitor-sqlite 实例。例如,new SQLiteConnection(CapacitorSQLite)
  • mode - 设置数据库加密模式:"no-encryption" | "encryption" | "secret" | "newsecret"
  • version - 数据库版本
  • journalMode - SQLite 日志模式(可选)

cordova 数据源选项

expo 数据源选项

  • database - 数据库名称。例如,"mydb"。
  • driver - Expo SQLite 模块。例如,require('expo-sqlite')

nativescript 数据源选项

  • database - 数据库名称

react-native 数据源选项

列类型

int, int2, int8, integer, tinyint, smallint, mediumint, bigint, decimal, numeric, float, double, real, double precision, datetime, varying character, character, native character, varchar, nchar, nvarchar2, unsigned big int, boolean, blob, text, clob, date, json, jsonb

TypeORM 在 SQLite 中支持 jsonjsonb 两种类型:

  • json 存储为 TEXT
  • jsonb 存储为 SQLite 的二进制 JSON 格式。TypeORM 在持久化期间自动使用 jsonb() 函数包装值,并在检索期间使用 json() 函数,以提供透明支持和更好的性能。

JSONB 支持需要 SQLite 3.45.0 或更高版本。当使用 jsonb 列类型时,TypeORM 将在数据库模式中使用 jsonb 类型,SQLite 在内部将其作为二进制 BLOB 处理。