SQL
插件提供了一个前端接口,用于通过 sqlx 与 SQL 数据库通信。它支持 Sqlite、MySQL 和 PostgreSQL 驱动程序,通过 Cargo 功能启用。
支持的平台
此插件需要 Rust 版本至少为 1.77.2
平台 | 级别 | 注释 |
---|---|---|
windows | ||
linux | ||
macos | ||
android | ||
ios |
设置
安装 SQL 插件即可开始使用。
使用项目的包管理器添加依赖项
npm run tauri add sql
yarn run tauri add sql
pnpm tauri add sql
deno task tauri add sql
bun tauri add sql
cargo tauri add sql
-
在
src-tauri
文件夹中运行以下命令,将插件添加到Cargo.toml
项目的依赖项中cargo add tauri-plugin-sql -
修改
lib.rs
以初始化插件src-tauri/src/lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().plugin(tauri_plugin_sql::Builder::default().build()).run(tauri::generate_context!()).expect("error while running tauri application");} -
使用您首选的 JavaScript 包管理器安装 JavaScript Guest 绑定
npm install @tauri-apps/plugin-sqlyarn add @tauri-apps/plugin-sqlpnpm add @tauri-apps/plugin-sqldeno add npm:@tauri-apps/plugin-sqlbun add @tauri-apps/plugin-sql
安装插件后,您必须选择支持的数据库引擎。可用的引擎有 Sqlite、MySQL 和 PostgreSQL。在 src-tauri
文件夹中运行以下命令以启用您首选的引擎
cargo add tauri-plugin-sql --features sqlite
cargo add tauri-plugin-sql --features mysql
cargo add tauri-plugin-sql --features postgres
用法
所有插件的 API 都可以通过 JavaScript guest 绑定使用
路径相对于 tauri::api::path::BaseDirectory::AppConfig
。
import Database from '@tauri-apps/plugin-sql';// when using `"withGlobalTauri": true`, you may use// const Database = window.__TAURI__.sql;
const db = await Database.load('sqlite:test.db');await db.execute('INSERT INTO ...');
import Database from '@tauri-apps/plugin-sql';// when using `"withGlobalTauri": true`, you may use// const Database = window.__TAURI__.sql;
const db = await Database.load('mysql://user:password@host/test');await db.execute('INSERT INTO ...');
import Database from '@tauri-apps/plugin-sql';// when using `"withGlobalTauri": true`, you may use// const Database = window.__TAURI__.sql;
const db = await Database.load('postgres://user:password@host/test');await db.execute('INSERT INTO ...');
语法
我们使用 sqlx 作为底层库,并采用其查询语法。
当替换查询数据时,使用“$#”语法
const result = await db.execute( "INSERT into todos (id, title, status) VALUES ($1, $2, $3)", [todos.id, todos.title, todos.status],);
const result = await db.execute("UPDATE todos SET title = $1, status = $2 WHERE id = $3",[todos.title, todos.status, todos.id],);
当替换查询数据时,使用“?”
const result = await db.execute( "INSERT into todos (id, title, status) VALUES (?, ?, ?)", [todos.id, todos.title, todos.status],);
const result = await db.execute( "UPDATE todos SET title = ?, status = ? WHERE id = ?", [todos.title, todos.status, todos.id],);
当替换查询数据时,使用“$#”语法
const result = await db.execute( "INSERT into todos (id, title, status) VALUES ($1, $2, $3)", [todos.id, todos.title, todos.status],);
const result = await db.execute("UPDATE todos SET title = $1, status = $2 WHERE id = $3",[todos.title, todos.status, todos.id],);
迁移
此插件支持数据库迁移,允许您随时间管理数据库模式演变。
定义迁移
迁移在 Rust 中使用 Migration
结构定义。每个迁移应包括唯一的版本号、描述、要执行的 SQL 以及迁移类型(Up 或 Down)。
迁移示例
use tauri_plugin_sql::{Migration, MigrationKind};
let migration = Migration { version: 1, description: "create_initial_tables", sql: "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);", kind: MigrationKind::Up,};
向插件构建器添加迁移
迁移在插件提供的 Builder
结构中注册。使用 add_migrations
方法将迁移添加到特定数据库连接的插件中。
添加迁移的示例
use tauri_plugin_sql::{Builder, Migration, MigrationKind};
fn main() { let migrations = vec![ // Define your migrations here Migration { version: 1, description: "create_initial_tables", sql: "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);", kind: MigrationKind::Up, } ];
tauri::Builder::default() .plugin( tauri_plugin_sql::Builder::default() .add_migrations("sqlite:mydatabase.db", migrations) .build(), ) ...}
应用迁移
要在初始化插件时应用迁移,请将连接字符串添加到 tauri.conf.json
文件
{ "plugins": { "sql": { "preload": ["sqlite:mydatabase.db"] } }}
或者,客户端 load()
也会为给定的连接字符串运行迁移
import Database from '@tauri-apps/plugin-sql';const db = await Database.load('sqlite:mydatabase.db');
确保迁移以正确的顺序定义,并且可以安全地多次运行。
迁移管理
- 版本控制:每个迁移都必须具有唯一的版本号。这对于确保迁移以正确的顺序应用至关重要。
- 幂等性:编写迁移的方式应使其可以安全地重新运行,而不会导致错误或意外后果。
- 测试:彻底测试迁移,以确保它们按预期工作,并且不会损害数据库的完整性。
权限
默认情况下,所有潜在危险的插件命令和作用域都被阻止且无法访问。您必须修改 capabilities
配置中的权限才能启用这些。
有关更多信息,请参阅功能概述,并参阅使用插件权限的分步指南。
{ "permissions": [ ..., "sql:default", "sql:allow-execute", ]}
默认权限
默认权限
此权限集配置了 sql 插件中可用的数据库操作类型。
已授予的权限
所有读取相关操作均已启用。还允许加载或关闭连接。
此默认权限集包括以下内容
allow-close
allow-load
allow-select
权限表
标识符 | 描述 |
---|---|
|
启用 close 命令,无需任何预配置的作用域。 |
|
拒绝 close 命令,无需任何预配置的作用域。 |
|
启用 execute 命令,无需任何预配置的作用域。 |
|
拒绝 execute 命令,无需任何预配置的作用域。 |
|
启用 load 命令,无需任何预配置的作用域。 |
|
拒绝 load 命令,无需任何预配置的作用域。 |
|
启用 select 命令,无需任何预配置的作用域。 |
|
拒绝 select 命令,无需任何预配置的作用域。 |
© 2025 Tauri 贡献者。CC-BY / MIT