ms-vite-plugin 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.js +6 -0
- package/dist/cli.js +91 -1
- package/dist/mcp/device-config.d.ts +55 -0
- package/dist/mcp/device-config.js +183 -0
- package/dist/mcp/docs-service.d.ts +65 -0
- package/dist/mcp/docs-service.js +168 -0
- package/dist/mcp/project.d.ts +16 -0
- package/dist/mcp/project.js +74 -0
- package/dist/mcp/tools.d.ts +18 -0
- package/dist/mcp/tools.js +825 -0
- package/dist/mcp/types.d.ts +32 -0
- package/dist/mcp/types.js +11 -0
- package/dist/mcp-server.d.ts +2 -0
- package/dist/mcp-server.js +86 -0
- package/dist/project.d.ts +89 -0
- package/dist/project.js +306 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.js +63 -0
- package/docs/api/action.md +922 -0
- package/docs/api/appleocr.md +229 -0
- package/docs/api/config.md +122 -0
- package/docs/api/cryptoUtils.md +232 -0
- package/docs/api/device.md +374 -0
- package/docs/api/file.md +516 -0
- package/docs/api/global.md +617 -0
- package/docs/api/hid.md +1032 -0
- package/docs/api/hotUpdate.md +166 -0
- package/docs/api/http.md +548 -0
- package/docs/api/image.md +907 -0
- package/docs/api/ime.md +290 -0
- package/docs/api/logger.md +324 -0
- package/docs/api/media.md +248 -0
- package/docs/api/mysql.md +441 -0
- package/docs/api/netCard.md +200 -0
- package/docs/api/node.md +353 -0
- package/docs/api/paddleocr.md +246 -0
- package/docs/api/pip.md +242 -0
- package/docs/api/system.md +572 -0
- package/docs/api/thread.md +269 -0
- package/docs/api/tomatoocr.md +425 -0
- package/docs/api/tts.md +334 -0
- package/docs/api/ui.md +947 -0
- package/docs/api/utils.md +265 -0
- package/docs/api/yolo.md +310 -0
- package/docs/apicn/action.md +919 -0
- package/docs/apicn/appleocr.md +233 -0
- package/docs/apicn/config.md +120 -0
- package/docs/apicn/device.md +385 -0
- package/docs/apicn/file.md +511 -0
- package/docs/apicn/global.md +613 -0
- package/docs/apicn/hid.md +1033 -0
- package/docs/apicn/hotUpdate.md +170 -0
- package/docs/apicn/http.md +672 -0
- package/docs/apicn/image.md +924 -0
- package/docs/apicn/ime.md +290 -0
- package/docs/apicn/logger.md +332 -0
- package/docs/apicn/media.md +252 -0
- package/docs/apicn/mysql.md +445 -0
- package/docs/apicn/netCard.md +200 -0
- package/docs/apicn/node.md +362 -0
- package/docs/apicn/paddleocr.md +255 -0
- package/docs/apicn/pip.md +242 -0
- package/docs/apicn/system.md +575 -0
- package/docs/apicn/thread.md +269 -0
- package/docs/apicn/tts.md +338 -0
- package/docs/apicn/ui.md +933 -0
- package/docs/apicn/utils.md +265 -0
- package/docs/apicn/yolo.md +314 -0
- package/docs/apipython/action.md +901 -0
- package/docs/apipython/appleocr.md +226 -0
- package/docs/apipython/config.md +126 -0
- package/docs/apipython/cryptoUtils.md +246 -0
- package/docs/apipython/device.md +365 -0
- package/docs/apipython/file.md +476 -0
- package/docs/apipython/g.md +154 -0
- package/docs/apipython/hid.md +1059 -0
- package/docs/apipython/hotUpdate.md +154 -0
- package/docs/apipython/image.md +938 -0
- package/docs/apipython/ime.md +306 -0
- package/docs/apipython/logger.md +330 -0
- package/docs/apipython/media.md +221 -0
- package/docs/apipython/mysql.md +432 -0
- package/docs/apipython/netCard.md +219 -0
- package/docs/apipython/node.md +331 -0
- package/docs/apipython/overview.md +66 -0
- package/docs/apipython/paddleocr.md +211 -0
- package/docs/apipython/pip.md +231 -0
- package/docs/apipython/system.md +458 -0
- package/docs/apipython/tomatoocr.md +444 -0
- package/docs/apipython/tts.md +331 -0
- package/docs/apipython/ui.md +949 -0
- package/docs/apipython/utils.md +284 -0
- package/docs/apipython/yolo.md +281 -0
- package/package.json +8 -4
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# 媒体模块 ($媒体)
|
|
2
|
+
|
|
3
|
+
媒体模块提供了丰富的媒体操作功能,包括图片和视频的相册管理,以及音频播放控制等功能。
|
|
4
|
+
|
|
5
|
+
## 功能概览
|
|
6
|
+
|
|
7
|
+
- **相册管理**: 保存图片和视频到相册,清理相册内容
|
|
8
|
+
- **音频播放**: MP3 音频的播放、停止和循环控制
|
|
9
|
+
- **同步/异步**: 支持异步播放和同步等待播放结束
|
|
10
|
+
|
|
11
|
+
## API 参考
|
|
12
|
+
|
|
13
|
+
### 相册操作
|
|
14
|
+
|
|
15
|
+
#### 保存图片到相册
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
function 保存图片到相册(图像ID: 字符串): 布尔值;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**参数:**
|
|
22
|
+
|
|
23
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
24
|
+
| -------- | ------ | -------- | ------ | ------------------------------ |
|
|
25
|
+
| `图像ID` | 字符串 | 是 | | 图像 ID(通过 image 模块获取) |
|
|
26
|
+
|
|
27
|
+
**返回值:**
|
|
28
|
+
|
|
29
|
+
| 类型 | 描述 |
|
|
30
|
+
| -------- | ------------ |
|
|
31
|
+
| `布尔值` | 是否保存成功 |
|
|
32
|
+
|
|
33
|
+
**示例:**
|
|
34
|
+
|
|
35
|
+
```javascript
|
|
36
|
+
// 保存截图到相册
|
|
37
|
+
$媒体.保存图片到相册("screen");
|
|
38
|
+
const 文档目录 = $文件.获取内部目录("documents");
|
|
39
|
+
|
|
40
|
+
// 读取图像并保存到相册
|
|
41
|
+
const 图像ID = $图像.读取图片(`${文档目录}/screenshot.png`);
|
|
42
|
+
if (图像ID) {
|
|
43
|
+
const 是否保存成功 = $媒体.保存图片到相册(图像ID);
|
|
44
|
+
if (是否保存成功) {
|
|
45
|
+
$打印信息日志("图片已保存到相册");
|
|
46
|
+
} else {
|
|
47
|
+
$打印错误日志("保存失败");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### 保存视频到相册
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
function 保存视频到相册(视频路径: 字符串): 布尔值;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**参数:**
|
|
59
|
+
|
|
60
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
61
|
+
| ---------- | ------ | -------- | ------ | ------------ |
|
|
62
|
+
| `视频路径` | 字符串 | 是 | | 视频文件路径 |
|
|
63
|
+
|
|
64
|
+
**返回值:**
|
|
65
|
+
|
|
66
|
+
| 类型 | 描述 |
|
|
67
|
+
| -------- | ------------ |
|
|
68
|
+
| `布尔值` | 是否保存成功 |
|
|
69
|
+
|
|
70
|
+
**示例:**
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
// 保存视频到相册 (从 documents 目录读取)
|
|
74
|
+
const 文档目录 = $文件.获取内部目录("documents");
|
|
75
|
+
const 文件名称 = "video.mp4";
|
|
76
|
+
const 视频路径 = `${文档目录}/${文件名称}`;
|
|
77
|
+
const 是否保存成功 = $媒体.保存视频到相册(视频路径);
|
|
78
|
+
if (是否保存成功) {
|
|
79
|
+
$打印信息日志("视频已保存到相册");
|
|
80
|
+
} else {
|
|
81
|
+
$打印错误日志("保存失败");
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### 清空相册中的图片
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
function 清空相册中的图片(): 布尔值;
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**返回值:**
|
|
92
|
+
|
|
93
|
+
| 类型 | 描述 |
|
|
94
|
+
| -------- | ------------ |
|
|
95
|
+
| `布尔值` | 是否删除成功 |
|
|
96
|
+
|
|
97
|
+
**示例:**
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
// 清空相册图片
|
|
101
|
+
const 是否删除成功 = $媒体.清空相册中的图片();
|
|
102
|
+
if (是否删除成功) {
|
|
103
|
+
$打印信息日志("相册图片已清空");
|
|
104
|
+
} else {
|
|
105
|
+
$打印错误日志("清空失败");
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### 清空相册中的视频
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
function 清空相册中的视频(): 布尔值;
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**返回值:**
|
|
116
|
+
|
|
117
|
+
| 类型 | 描述 |
|
|
118
|
+
| -------- | ------------ |
|
|
119
|
+
| `布尔值` | 是否删除成功 |
|
|
120
|
+
|
|
121
|
+
**示例:**
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
// 清空相册视频
|
|
125
|
+
const 是否删除成功 = $媒体.清空相册中的视频();
|
|
126
|
+
if (是否删除成功) {
|
|
127
|
+
$打印信息日志("相册视频已清空");
|
|
128
|
+
} else {
|
|
129
|
+
$打印错误日志("清空失败");
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### 清空相册中的截图
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
function 清空相册中的截图(): 布尔值;
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**返回值:**
|
|
140
|
+
|
|
141
|
+
| 类型 | 描述 |
|
|
142
|
+
| -------- | ------------ |
|
|
143
|
+
| `布尔值` | 是否删除成功 |
|
|
144
|
+
|
|
145
|
+
**示例:**
|
|
146
|
+
|
|
147
|
+
```javascript
|
|
148
|
+
// 清空相册截图
|
|
149
|
+
const 是否删除成功 = $媒体.清空相册中的截图();
|
|
150
|
+
if (是否删除成功) {
|
|
151
|
+
$打印信息日志("相册截图已清空");
|
|
152
|
+
} else {
|
|
153
|
+
$打印错误日志("清空失败");
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 音频播放
|
|
158
|
+
|
|
159
|
+
#### 播放 MP3 音乐 - 异步播放 MP3 音频文件。
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
function 播放MP3音乐(文件路径: 字符串, 是否循环播放: 布尔值): 布尔值;
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**参数:**
|
|
166
|
+
|
|
167
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
168
|
+
| -------------- | ------ | -------- | ------ | ------------ |
|
|
169
|
+
| `文件路径` | 字符串 | 是 | | MP3 文件路径 |
|
|
170
|
+
| `是否循环播放` | 布尔值 | 是 | | 是否循环播放 |
|
|
171
|
+
|
|
172
|
+
**返回值:**
|
|
173
|
+
|
|
174
|
+
| 类型 | 描述 |
|
|
175
|
+
| -------- | ---------------- |
|
|
176
|
+
| `布尔值` | 是否开始播放成功 |
|
|
177
|
+
|
|
178
|
+
**示例:**
|
|
179
|
+
|
|
180
|
+
```javascript
|
|
181
|
+
// 播放背景音乐(循环)
|
|
182
|
+
const 是否开始播放成功 = $媒体.播放MP3音乐("/path/to/background.mp3", true);
|
|
183
|
+
if (是否开始播放成功) {
|
|
184
|
+
$打印信息日志("背景音乐开始播放");
|
|
185
|
+
} else {
|
|
186
|
+
$打印错误日志("背景音乐播放失败");
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// 播放音效(不循环)
|
|
190
|
+
const 是否开始播放成功 = $媒体.播放MP3音乐("/path/to/sound.mp3", false);
|
|
191
|
+
if (是否开始播放成功) {
|
|
192
|
+
$打印信息日志("音效播放中");
|
|
193
|
+
} else {
|
|
194
|
+
$打印错误日志("音效播放失败");
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
#### 停止播放 MP3 音乐 - 停止当前播放的 MP3 音频。
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
function 停止播放MP3音乐(): 布尔值;
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**返回值:**
|
|
205
|
+
|
|
206
|
+
| 类型 | 描述 |
|
|
207
|
+
| -------- | ------------ |
|
|
208
|
+
| `布尔值` | 是否停止成功 |
|
|
209
|
+
|
|
210
|
+
**示例:**
|
|
211
|
+
|
|
212
|
+
```javascript
|
|
213
|
+
// 停止音乐播放
|
|
214
|
+
const 是否停止成功 = $媒体.停止播放MP3音乐();
|
|
215
|
+
if (是否停止成功) {
|
|
216
|
+
$打印信息日志("音乐已停止");
|
|
217
|
+
} else {
|
|
218
|
+
$打印错误日志("停止失败或没有正在播放的音乐");
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
#### 同步播放 MP3 音乐 - 同步播放 MP3 音频文件(等待播放结束)。
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
function 同步播放MP3音乐(文件路径: 字符串, 是否循环播放: 布尔值): 布尔值;
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**参数:**
|
|
229
|
+
|
|
230
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
231
|
+
| -------------- | ------ | -------- | ------ | -------------------------------------------------------------------- |
|
|
232
|
+
| `文件路径` | 字符串 | 是 | | MP3 文件路径 |
|
|
233
|
+
| `是否循环播放` | 布尔值 | 是 | | 是否循环播放 注意:循环播放会阻塞线程,慎用,不要在主线程设置为 true |
|
|
234
|
+
|
|
235
|
+
**返回值:**
|
|
236
|
+
|
|
237
|
+
| 类型 | 描述 |
|
|
238
|
+
| -------- | ------------ |
|
|
239
|
+
| `布尔值` | 是否播放成功 |
|
|
240
|
+
|
|
241
|
+
**示例:**
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
// 同步播放音频,等待播放完成
|
|
245
|
+
$打印信息日志("开始播放音频...");
|
|
246
|
+
const 是否播放成功 = $媒体.同步播放MP3音乐("/path/to/notification.mp3", false);
|
|
247
|
+
if (是否播放成功) {
|
|
248
|
+
$打印信息日志("音频播放完成");
|
|
249
|
+
} else {
|
|
250
|
+
$打印错误日志("播放失败");
|
|
251
|
+
}
|
|
252
|
+
```
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
# MySQL 数据库模块 ($MySQL 数据库)
|
|
2
|
+
|
|
3
|
+
MySQL 模块提供了完整的 MySQL 数据库连接和操作功能,支持连接管理、查询执行、事务处理等核心数据库操作。
|
|
4
|
+
|
|
5
|
+
## 功能概览
|
|
6
|
+
|
|
7
|
+
- **连接管理**: 创建、连接、断开数据库连接
|
|
8
|
+
- **数据查询**: 执行 SELECT 查询操作
|
|
9
|
+
- **数据更新**: 执行 CREATE INSERT、UPDATE、DELETE 操作
|
|
10
|
+
- **事务支持**: 完整的事务管理功能
|
|
11
|
+
- **参数绑定**: 支持参数化查询,防止 SQL 注入
|
|
12
|
+
|
|
13
|
+
## 类型定义
|
|
14
|
+
|
|
15
|
+
### MySQL 连接配置
|
|
16
|
+
|
|
17
|
+
数据库连接配置接口。
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
interface MySQL连接配置 {
|
|
21
|
+
host: 字符串; // 数据库主机地址
|
|
22
|
+
port?: 数字; // 数据库端口,默认 3306
|
|
23
|
+
username: 字符串; // 用户名
|
|
24
|
+
password: 字符串; // 密码
|
|
25
|
+
database: 字符串; // 数据库名
|
|
26
|
+
charset?: 字符串; // 字符集,默认 utf8mb4
|
|
27
|
+
connectTimeout?: 数字; // 连接超时时间,默认 5000 毫秒
|
|
28
|
+
queryTimeout?: 数字; // 查询超时时间,默认 30000 毫秒
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**数据类型说明:**
|
|
33
|
+
|
|
34
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
35
|
+
| ---------------- | ------ | -------- | ------- | ----------------------------- |
|
|
36
|
+
| `host` | 字符串 | 是 | | 数据库主机地址,必填 |
|
|
37
|
+
| `port` | 数字 | 否 | 3306 | 数据库端口,默认 3306 |
|
|
38
|
+
| `username` | 字符串 | 是 | | 用户名,必填 |
|
|
39
|
+
| `password` | 字符串 | 是 | | 密码,必填 |
|
|
40
|
+
| `database` | 字符串 | 是 | | 数据库名,必填 |
|
|
41
|
+
| `charset` | 字符串 | 否 | utf8mb4 | 字符集,默认 utf8mb4 |
|
|
42
|
+
| `connectTimeout` | 数字 | 否 | 5000 | 连接超时时间,默认 5000 毫秒 |
|
|
43
|
+
| `queryTimeout` | 数字 | 否 | 30000 | 查询超时时间,默认 30000 毫秒 |
|
|
44
|
+
|
|
45
|
+
### MySQLResult
|
|
46
|
+
|
|
47
|
+
查询结果接口。
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
interface MySQL查询结果 {
|
|
51
|
+
rows: 数组<字典<任意类型>>; // 查询结果数据行
|
|
52
|
+
affectedRows: 数字; // 受影响的行数
|
|
53
|
+
insertId?: 数字; // 插入ID(仅适用于INSERT操作)
|
|
54
|
+
success: 布尔值; // 查询是否成功
|
|
55
|
+
error?: 字符串; // 错误信息
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**数据类型说明:**
|
|
60
|
+
|
|
61
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
62
|
+
| -------------- | -------------------- | -------- | ------ | ------------------------------- |
|
|
63
|
+
| `rows` | 数组<字典<任意类型>> | 否 | | 查询结果数据行 |
|
|
64
|
+
| `affectedRows` | 数字 | 否 | | 受影响的行数 |
|
|
65
|
+
| `insertId` | 数字 | 否 | | 插入 ID(仅适用于 INSERT 操作) |
|
|
66
|
+
| `success` | 布尔值 | 否 | | 查询是否成功 |
|
|
67
|
+
| `error` | 字符串 | 否 | | 错误信息 |
|
|
68
|
+
|
|
69
|
+
## API 参考
|
|
70
|
+
|
|
71
|
+
### 连接管理
|
|
72
|
+
|
|
73
|
+
#### 连接 - 连接到数据库
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
function 连接(连接配置: MySQL连接配置): 布尔值;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**参数:**
|
|
80
|
+
|
|
81
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
82
|
+
| ---------- | ------------------ | -------- | ------ | ------------------ |
|
|
83
|
+
| `连接配置` | MySQL 连接配置对象 | 是 | | 数据库连接配置对象 |
|
|
84
|
+
|
|
85
|
+
**返回值:**
|
|
86
|
+
|
|
87
|
+
| 类型 | 描述 |
|
|
88
|
+
| -------- | ------------ |
|
|
89
|
+
| `布尔值` | 是否连接成功 |
|
|
90
|
+
|
|
91
|
+
**示例:**
|
|
92
|
+
|
|
93
|
+
```javascript
|
|
94
|
+
const 是否连接成功 = $MySQL数据库.连接({
|
|
95
|
+
host: "localhost",
|
|
96
|
+
port: 3306,
|
|
97
|
+
username: "root",
|
|
98
|
+
password: "password",
|
|
99
|
+
database: "test_db",
|
|
100
|
+
charset: "utf8mb4",
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
if (是否连接成功) {
|
|
104
|
+
$打印信息日志("数据库连接成功");
|
|
105
|
+
} else {
|
|
106
|
+
$打印错误日志("数据库连接失败");
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### 断开连接 - 断开数据库连接
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
function 断开连接(): 无返回值;
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**示例:**
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
$MySQL数据库.断开连接();
|
|
120
|
+
$打印信息日志("数据库连接已断开");
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### 检查连接状态 - 检查数据库连接状态
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
function 是否已连接(): 布尔值;
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**返回值:**
|
|
130
|
+
|
|
131
|
+
| 类型 | 描述 |
|
|
132
|
+
| -------- | ---------- |
|
|
133
|
+
| `布尔值` | 是否已连接 |
|
|
134
|
+
|
|
135
|
+
**示例:**
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
if ($MySQL数据库.是否已连接()) {
|
|
139
|
+
$打印信息日志("数据库已连接");
|
|
140
|
+
} else {
|
|
141
|
+
$打印警告日志("数据库未连接");
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 数据操作
|
|
146
|
+
|
|
147
|
+
#### 查询 - 执行查询操作
|
|
148
|
+
|
|
149
|
+
执行 SELECT 查询操作,用于数据检索。
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
function 查询(sql语句: 字符串, 参数?: 数组<任意类型>): MySQL查询结果;
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**参数:**
|
|
156
|
+
|
|
157
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
158
|
+
| --------- | -------------- | -------- | ------ | ------------------ |
|
|
159
|
+
| `sql语句` | 字符串 | 是 | | SQL 查询语句 |
|
|
160
|
+
| `参数` | 数组<任意类型> | 否 | | 查询参数数组,可选 |
|
|
161
|
+
|
|
162
|
+
**返回值:**
|
|
163
|
+
|
|
164
|
+
| 类型 | 描述 |
|
|
165
|
+
| --------------- | ------------ |
|
|
166
|
+
| `MySQL查询结果` | 查询结果对象 |
|
|
167
|
+
|
|
168
|
+
**示例:**
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
// 简单查询
|
|
172
|
+
const result1 = $MySQL数据库.查询("SELECT * FROM users");
|
|
173
|
+
if (result1.success) {
|
|
174
|
+
$打印信息日志(`查询到 ${result1.rows.length} 条用户记录`);
|
|
175
|
+
result1.rows.forEach((user) => {
|
|
176
|
+
$打印信息日志(`用户: ${user.name}, 邮箱: ${user.email}`);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// 带参数查询
|
|
181
|
+
const result2 = $MySQL数据库.查询(
|
|
182
|
+
"SELECT * FROM users WHERE age > ? AND city = ?",
|
|
183
|
+
[18, "北京"],
|
|
184
|
+
);
|
|
185
|
+
if (result2.success) {
|
|
186
|
+
$打印信息日志(`找到 ${result2.rows.length} 个符合条件的用户`);
|
|
187
|
+
} else {
|
|
188
|
+
$打印错误日志(`查询失败: ${result2.error}`);
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
#### 执行 - 执行更新操作
|
|
193
|
+
|
|
194
|
+
执行 CREATE、INSERT、UPDATE、DELETE 等数据修改操作。
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
function 执行(sql语句: 字符串, 参数?: 数组<任意类型>): MySQL查询结果;
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**参数:**
|
|
201
|
+
|
|
202
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
203
|
+
| --------- | -------------- | -------- | ------ | -------------- |
|
|
204
|
+
| `sql语句` | 字符串 | 是 | | SQL 语句 |
|
|
205
|
+
| `参数` | 数组<任意类型> | 否 | | 参数数组,可选 |
|
|
206
|
+
|
|
207
|
+
**返回值:**
|
|
208
|
+
|
|
209
|
+
| 类型 | 描述 |
|
|
210
|
+
| --------------- | ------------ |
|
|
211
|
+
| `MySQL查询结果` | 执行结果对象 |
|
|
212
|
+
|
|
213
|
+
**示例:**
|
|
214
|
+
|
|
215
|
+
```javascript
|
|
216
|
+
// 创建表
|
|
217
|
+
const createTableResult = $MySQL数据库.执行(`
|
|
218
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
219
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
220
|
+
name VARCHAR(255),
|
|
221
|
+
email VARCHAR(255),
|
|
222
|
+
age INT
|
|
223
|
+
)
|
|
224
|
+
`);
|
|
225
|
+
if (createTableResult.success) {
|
|
226
|
+
$打印信息日志("用户表创建成功");
|
|
227
|
+
} else {
|
|
228
|
+
$打印错误日志(`用户表创建失败: ${createTableResult.error}`);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// 插入数据
|
|
232
|
+
const insertResult = $MySQL数据库.执行(
|
|
233
|
+
"INSERT INTO users (name, email, age) VALUES (?, ?, ?)",
|
|
234
|
+
["张三", "zhangsan@example.com", 25],
|
|
235
|
+
);
|
|
236
|
+
if (insertResult.success) {
|
|
237
|
+
$打印信息日志(`用户插入成功,ID: ${insertResult.insertId}`);
|
|
238
|
+
$打印信息日志(`影响行数: ${insertResult.affectedRows}`);
|
|
239
|
+
} else {
|
|
240
|
+
$打印错误日志(`用户插入失败: ${insertResult.error}`);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// 更新数据
|
|
244
|
+
const updateResult = $MySQL数据库.执行(
|
|
245
|
+
"UPDATE users SET age = ? WHERE name = ?",
|
|
246
|
+
[26, "张三"],
|
|
247
|
+
);
|
|
248
|
+
if (updateResult.success) {
|
|
249
|
+
$打印信息日志(`更新了 ${updateResult.affectedRows} 条记录`);
|
|
250
|
+
} else {
|
|
251
|
+
$打印错误日志(`更新失败: ${updateResult.error}`);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// 删除数据
|
|
255
|
+
const deleteResult = $MySQL数据库.执行("DELETE FROM users WHERE age < ?", [18]);
|
|
256
|
+
if (deleteResult.success) {
|
|
257
|
+
$打印信息日志(`删除了 ${deleteResult.affectedRows} 条记录`);
|
|
258
|
+
} else {
|
|
259
|
+
$打印错误日志(`删除失败: ${deleteResult.error}`);
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### 事务管理
|
|
264
|
+
|
|
265
|
+
#### 开始事务 - 开始数据库事务
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
function 开始事务(): 布尔值;
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**返回值:**
|
|
272
|
+
|
|
273
|
+
| 类型 | 描述 |
|
|
274
|
+
| -------- | ---------------- |
|
|
275
|
+
| `布尔值` | 是否成功开始事务 |
|
|
276
|
+
|
|
277
|
+
**示例:**
|
|
278
|
+
|
|
279
|
+
```javascript
|
|
280
|
+
if ($MySQL数据库.开始事务()) {
|
|
281
|
+
$打印信息日志("事务开始");
|
|
282
|
+
} else {
|
|
283
|
+
$打印错误日志("事务开始失败");
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
#### 提交事务 - 提交数据库事务
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
function 提交事务(): 布尔值;
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**返回值:**
|
|
294
|
+
|
|
295
|
+
| 类型 | 描述 |
|
|
296
|
+
| -------- | ---------------- |
|
|
297
|
+
| `布尔值` | 是否成功提交事务 |
|
|
298
|
+
|
|
299
|
+
**示例:**
|
|
300
|
+
|
|
301
|
+
```javascript
|
|
302
|
+
if ($MySQL数据库.提交事务()) {
|
|
303
|
+
$打印信息日志("事务提交成功");
|
|
304
|
+
} else {
|
|
305
|
+
$打印错误日志("事务提交失败");
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
#### 回滚事务 - 回滚数据库事务
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
function 回滚事务(): 布尔值;
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**返回值:**
|
|
316
|
+
|
|
317
|
+
| 类型 | 描述 |
|
|
318
|
+
| -------- | ---------------- |
|
|
319
|
+
| `布尔值` | 是否成功回滚事务 |
|
|
320
|
+
|
|
321
|
+
**示例:**
|
|
322
|
+
|
|
323
|
+
```javascript
|
|
324
|
+
if ($MySQL数据库.回滚事务()) {
|
|
325
|
+
$打印信息日志("事务回滚成功");
|
|
326
|
+
} else {
|
|
327
|
+
$打印错误日志("事务回滚失败");
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
## 完整使用示例
|
|
332
|
+
|
|
333
|
+
### 基本数据库操作
|
|
334
|
+
|
|
335
|
+
```javascript
|
|
336
|
+
// 1. 创建连接配置
|
|
337
|
+
const dbConfig = {
|
|
338
|
+
host: "localhost",
|
|
339
|
+
port: 3306,
|
|
340
|
+
username: "root",
|
|
341
|
+
password: "password",
|
|
342
|
+
database: "my_app",
|
|
343
|
+
charset: "utf8mb4",
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
// 2. 连接数据库
|
|
347
|
+
if ($MySQL数据库.连接(dbConfig)) {
|
|
348
|
+
$打印信息日志("数据库连接成功");
|
|
349
|
+
|
|
350
|
+
// 3. 查询数据
|
|
351
|
+
const users = $MySQL数据库.查询("SELECT * FROM users WHERE status = ?", [
|
|
352
|
+
"active",
|
|
353
|
+
]);
|
|
354
|
+
if (users.success) {
|
|
355
|
+
$打印信息日志(`找到 ${users.rows.length} 个活跃用户`);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// 4. 插入新用户
|
|
359
|
+
const newUser = $MySQL数据库.执行(
|
|
360
|
+
"INSERT INTO users (name, email, status) VALUES (?, ?, ?)",
|
|
361
|
+
["新用户", "newuser@example.com", "active"],
|
|
362
|
+
);
|
|
363
|
+
if (newUser.success) {
|
|
364
|
+
$打印信息日志(`新用户创建成功,ID: ${newUser.insertId}`);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// 5. 断开连接
|
|
368
|
+
$MySQL数据库.断开连接();
|
|
369
|
+
} else {
|
|
370
|
+
$打印错误日志("数据库连接失败");
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 事务处理示例
|
|
375
|
+
|
|
376
|
+
```javascript
|
|
377
|
+
// 转账操作示例
|
|
378
|
+
function transferMoney(fromUserId, toUserId, amount) {
|
|
379
|
+
if (!$MySQL数据库.开始事务()) {
|
|
380
|
+
$打印错误日志("事务开始失败");
|
|
381
|
+
return false;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
try {
|
|
385
|
+
// 扣除转出账户余额
|
|
386
|
+
const debitResult = $MySQL数据库.执行(
|
|
387
|
+
"UPDATE accounts SET balance = balance - ? WHERE user_id = ? AND balance >= ?",
|
|
388
|
+
[amount, fromUserId, amount],
|
|
389
|
+
);
|
|
390
|
+
|
|
391
|
+
if (!debitResult.success || debitResult.affectedRows === 0) {
|
|
392
|
+
throw new Error("余额不足或扣款失败");
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// 增加转入账户余额
|
|
396
|
+
const creditResult = $MySQL数据库.执行(
|
|
397
|
+
"UPDATE accounts SET balance = balance + ? WHERE user_id = ?",
|
|
398
|
+
[amount, toUserId],
|
|
399
|
+
);
|
|
400
|
+
|
|
401
|
+
if (!creditResult.success || creditResult.affectedRows === 0) {
|
|
402
|
+
throw new Error("转入账户不存在或转账失败");
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
// 记录转账日志
|
|
406
|
+
const logResult = $MySQL数据库.执行(
|
|
407
|
+
"INSERT INTO transfer_logs (from_user, to_user, amount, created_at) VALUES (?, ?, ?, NOW())",
|
|
408
|
+
[fromUserId, toUserId, amount],
|
|
409
|
+
);
|
|
410
|
+
|
|
411
|
+
if (!logResult.success) {
|
|
412
|
+
throw new Error("转账日志记录失败");
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// 提交事务
|
|
416
|
+
if ($MySQL数据库.提交事务()) {
|
|
417
|
+
$打印信息日志(`转账成功: ${fromUserId} -> ${toUserId}, 金额: ${amount}`);
|
|
418
|
+
return true;
|
|
419
|
+
} else {
|
|
420
|
+
throw new Error("事务提交失败");
|
|
421
|
+
}
|
|
422
|
+
} catch (error) {
|
|
423
|
+
// 回滚事务
|
|
424
|
+
$MySQL数据库.回滚事务();
|
|
425
|
+
$打印错误日志(`转账失败: ${error.message}`);
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// 使用示例
|
|
431
|
+
if ($MySQL数据库.是否已连接()) {
|
|
432
|
+
const success = transferMoney(1, 2, 100.0);
|
|
433
|
+
if (success) {
|
|
434
|
+
$打印信息日志("转账操作完成");
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
## 注意事项
|
|
440
|
+
|
|
441
|
+
1. **连接管理**: 使用全局单例连接,确保在应用生命周期内正确管理连接状态
|
|
442
|
+
2. **参数绑定**: 始终使用参数化查询来防止 SQL 注入攻击
|
|
443
|
+
3. **事务处理**: 在事务中发生错误时,确保调用 `回滚事务()` 来回滚事务
|
|
444
|
+
4. **错误处理**: 检查每个操作的 `success` 字段,并适当处理错误信息
|
|
445
|
+
5. **资源清理**: 在应用结束时调用 `断开连接()` 来释放数据库连接资源
|