From 87782187d7ab7f5e6b0d7b9f5f14eaa24e63bb26 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Wed, 25 Mar 2026 17:49:50 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20=E6=B7=BB=E5=8A=A0=20SQLite=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=93=8D=E4=BD=9C=E8=A7=84=E5=88=99?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .trae/rules/sqlite-rules.md | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .trae/rules/sqlite-rules.md diff --git a/.trae/rules/sqlite-rules.md b/.trae/rules/sqlite-rules.md new file mode 100644 index 00000000..c0067df7 --- /dev/null +++ b/.trae/rules/sqlite-rules.md @@ -0,0 +1,62 @@ +# SQLite 数据库操作规则 + +## 参数占位符 + +使用 `$1, $2, $3...` 作为参数占位符,**禁止使用 `?`**: + +```typescript +// 正确 +await db.execute( + "INSERT INTO Table(key, value) VALUES ($1, $2)", + [key, value] +); + +// 错误 +await db.execute( + "INSERT INTO Table(key, value) VALUES (?, ?)", + [key, value] +); +``` + +## 异步模式 + +所有数据库操作返回 Promise,必须使用 `await`: + +```typescript +// 正确 +const result = await db.execute(sql, params); + +// 错误 - 不处理 Promise +db.execute(sql, params); +``` + +## 插入/更新模式 + +使用 `ON CONFLICT` 处理插入或更新: + +```typescript +await db.execute( + `INSERT INTO Table(key, value, updated) + VALUES ($1, $2, datetime('now', 'localtime')) + ON CONFLICT(key) DO UPDATE SET value = $2, updated = datetime('now', 'localtime');`, + [key, value], +); +``` + +## 查询模式 + +```typescript +const rows = await db.select( + "SELECT * FROM Table WHERE id = $1", + [id], +); +``` + +## 路径别名 + +数据库相关代码使用以下别名: + +| 别名 | 路径 | +|------|------| +| `@Sql/*` | `./src/plugins/Sqlite/*` | +| `@Sqlm/*` | `./src/plugins/Sqlite/modules/*` | \ No newline at end of file