easy-sqlite-mcp 1.0.3 → 1.0.4
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/README.md +164 -55
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/sqlite.d.ts +4 -1
- package/dist/tools/sqlite.d.ts.map +1 -1
- package/dist/tools/sqlite.js +61 -52
- package/dist/tools/sqlite.js.map +1 -1
- package/package.json +1 -1
- package/skills/sqlite-mcp/SKILL.md +0 -37
package/README.md
CHANGED
|
@@ -2,16 +2,74 @@
|
|
|
2
2
|
|
|
3
3
|
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server implemented in Node.js and TypeScript, designed to enable LLMs to interact directly with SQLite databases.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
## Modes
|
|
6
|
+
|
|
7
|
+
Easy SQLite MCP supports two startup modes. The server description is generated at startup so MCP clients and agents can clearly understand which mode is active.
|
|
8
|
+
|
|
9
|
+
### Manual Mode
|
|
10
|
+
|
|
11
|
+
Manual mode is used when `SQLITE_PATH` is not provided.
|
|
12
|
+
|
|
13
|
+
In this mode, the agent must explicitly open and close a database:
|
|
14
|
+
|
|
15
|
+
1. Call `sqlite_open(path)` before using database tools.
|
|
16
|
+
2. Use query, execute, and schema discovery tools.
|
|
17
|
+
3. Call `sqlite_close` when finished.
|
|
18
|
+
|
|
19
|
+
Only one SQLite database file can be open at a time. Opening another file closes the previous connection first.
|
|
20
|
+
|
|
21
|
+
Server description:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
Manual: This is a SQLite tool. Before using it, call sqlite_open(path) to open a database file. After use, call sqlite_close to close it. Only one database file can be open at a time.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Available tools in Manual mode:
|
|
28
|
+
|
|
29
|
+
- `sqlite_open`
|
|
30
|
+
- `sqlite_close`
|
|
31
|
+
- `sqlite_status`
|
|
32
|
+
- `sqlite_query`
|
|
33
|
+
- `sqlite_execute`
|
|
34
|
+
- `sqlite_list_tables`
|
|
35
|
+
- `sqlite_describe_table`
|
|
36
|
+
|
|
37
|
+
### Fixed Mode
|
|
38
|
+
|
|
39
|
+
Fixed mode is used when `SQLITE_PATH` is provided as an environment variable.
|
|
40
|
+
|
|
41
|
+
In this mode, the server automatically opens the configured SQLite database during startup. The agent does not need to call `sqlite_open`, and connection switching is disabled.
|
|
42
|
+
|
|
43
|
+
Server description:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
Fixed: This is a SQLite tool connected to Path:<SQLITE_PATH>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Available tools in Fixed mode:
|
|
50
|
+
|
|
51
|
+
- `sqlite_status`
|
|
52
|
+
- `sqlite_query`
|
|
53
|
+
- `sqlite_execute`
|
|
54
|
+
- `sqlite_list_tables`
|
|
55
|
+
- `sqlite_describe_table`
|
|
56
|
+
|
|
57
|
+
Example:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
SQLITE_PATH=/data/app.sqlite npx easy-sqlite-mcp
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Features
|
|
64
|
+
|
|
65
|
+
This server provides SQLite tools covering all requirements from connection management to data querying:
|
|
66
|
+
|
|
67
|
+
1. **Connection Management**:
|
|
68
|
+
* `sqlite_open`: Open a specific SQLite database file path. Manual mode only.
|
|
69
|
+
* `sqlite_close`: Close the current database connection. Manual mode only.
|
|
70
|
+
* `sqlite_status`: Check connection status, file path, and database summary.
|
|
71
|
+
2. **Data Operations**:
|
|
72
|
+
* `sqlite_query`: Execute read-only `SELECT` queries and return results in a structured format.
|
|
15
73
|
* `sqlite_execute`: Execute write or modification operations (e.g., `INSERT`, `UPDATE`, `DELETE`, `CREATE`, `DROP`).
|
|
16
74
|
3. **Schema Discovery**:
|
|
17
75
|
* `sqlite_list_tables`: List all user-defined tables in the database.
|
|
@@ -33,51 +91,102 @@ npm run build
|
|
|
33
91
|
npm run dev # Watch for changes and run in development mode
|
|
34
92
|
```
|
|
35
93
|
|
|
36
|
-
## Claude Desktop Example
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
94
|
+
## Claude Desktop Example
|
|
95
|
+
|
|
96
|
+
Manual mode:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"mcpServers": {
|
|
101
|
+
"easy-sqlite-mcp": {
|
|
102
|
+
"command": "npx",
|
|
103
|
+
"args": [
|
|
104
|
+
"-y",
|
|
105
|
+
"easy-sqlite-mcp"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Fixed mode example:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"mcpServers": {
|
|
117
|
+
"easy-sqlite-mcp": {
|
|
118
|
+
"command": "npx",
|
|
119
|
+
"args": [
|
|
120
|
+
"-y",
|
|
121
|
+
"easy-sqlite-mcp"
|
|
122
|
+
],
|
|
123
|
+
"env": {
|
|
124
|
+
"SQLITE_PATH": "/absolute/path/to/database.sqlite"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Codex config.toml Example
|
|
132
|
+
|
|
133
|
+
Manual mode:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
[mcp_servers.easy-sqlite-mcp]
|
|
137
|
+
args = ["-y", "easy-sqlite-mcp"]
|
|
138
|
+
command = "npx"
|
|
139
|
+
enabled = true
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Fixed mode example:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
[mcp_servers.easy-sqlite-mcp]
|
|
146
|
+
args = ["-y", "easy-sqlite-mcp"]
|
|
147
|
+
command = "npx"
|
|
148
|
+
enabled = true
|
|
149
|
+
|
|
150
|
+
[mcp_servers.easy-sqlite-mcp.env]
|
|
151
|
+
SQLITE_PATH = "/absolute/path/to/database.sqlite"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## OpenCode opencode.jsonc Example
|
|
155
|
+
|
|
156
|
+
Manual mode:
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"$schema": "https://opencode.ai/config.json",
|
|
161
|
+
"mcp": {
|
|
162
|
+
"easy-sqlite-mcp": {
|
|
163
|
+
"type": "local",
|
|
164
|
+
"command": ["npx", "-y", "easy-sqlite-mcp"],
|
|
165
|
+
"enabled": true,
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Fixed mode example:
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"$schema": "https://opencode.ai/config.json",
|
|
176
|
+
"mcp": {
|
|
177
|
+
"easy-sqlite-mcp": {
|
|
178
|
+
"type": "local",
|
|
179
|
+
"command": ["npx", "-y", "easy-sqlite-mcp"],
|
|
180
|
+
"enabled": true,
|
|
181
|
+
"environment": {
|
|
182
|
+
"SQLITE_PATH": "/absolute/path/to/database.sqlite"
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Tech Stack
|
|
81
190
|
- **Runtime**: Node.js (>= 18)
|
|
82
191
|
- **Language**: TypeScript
|
|
83
192
|
- **SDK**: @modelcontextprotocol/sdk
|
package/dist/index.js
CHANGED
|
@@ -9,13 +9,17 @@
|
|
|
9
9
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
10
10
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
11
|
import { registerSqliteTools } from "./tools/sqlite.js";
|
|
12
|
+
const sqlitePath = process.env.SQLITE_PATH?.trim();
|
|
12
13
|
// Create MCP server instance
|
|
13
14
|
const server = new McpServer({
|
|
14
15
|
name: "easy-sqlite-mcp",
|
|
15
|
-
version: "1.0.
|
|
16
|
+
version: "1.0.3",
|
|
17
|
+
description: sqlitePath
|
|
18
|
+
? `Fixed: This is a SQLite tool connected to Path:${sqlitePath}`
|
|
19
|
+
: "Manual: This is a SQLite tool. Before using it, call sqlite_open(path) to open a database file. After use, call sqlite_close to close it. Only one database file can be open at a time.",
|
|
16
20
|
});
|
|
17
21
|
// Register all SQLite tools
|
|
18
|
-
registerSqliteTools(server);
|
|
22
|
+
registerSqliteTools(server, { fixedDatabasePath: sqlitePath });
|
|
19
23
|
// Start the server with stdio transport
|
|
20
24
|
async function main() {
|
|
21
25
|
const transport = new StdioServerTransport();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,6BAA6B;AAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AAEnD,6BAA6B;AAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,UAAU;QACrB,CAAC,CAAC,kDAAkD,UAAU,EAAE;QAChE,CAAC,CAAC,yLAAyL;CAC9L,CAAC,CAAC;AAEH,4BAA4B;AAC5B,mBAAmB,CAAC,MAAM,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC;AAE/D,wCAAwC;AACxC,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/tools/sqlite.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export type RegisterSqliteToolsOptions = {
|
|
3
|
+
fixedDatabasePath?: string;
|
|
4
|
+
};
|
|
2
5
|
/**
|
|
3
6
|
* Register all SQLite tools on the MCP server.
|
|
4
7
|
*/
|
|
5
|
-
export declare function registerSqliteTools(server: McpServer): void;
|
|
8
|
+
export declare function registerSqliteTools(server: McpServer, options?: RegisterSqliteToolsOptions): void;
|
|
6
9
|
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE;;GAEG;AACH,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,0BAA+B,GACvC,IAAI,CA8SN"}
|
package/dist/tools/sqlite.js
CHANGED
|
@@ -4,66 +4,75 @@ const sqliteManager = new SqliteManager();
|
|
|
4
4
|
/**
|
|
5
5
|
* Register all SQLite tools on the MCP server.
|
|
6
6
|
*/
|
|
7
|
-
export function registerSqliteTools(server) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
export function registerSqliteTools(server, options = {}) {
|
|
8
|
+
const fixedDatabasePath = options.fixedDatabasePath?.trim();
|
|
9
|
+
if (fixedDatabasePath) {
|
|
10
|
+
const result = sqliteManager.open(fixedDatabasePath);
|
|
11
|
+
if (!result.success) {
|
|
12
|
+
throw new Error(result.message);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (!fixedDatabasePath) {
|
|
16
|
+
// ─── sqlite_open ───────────────────────────────────────────────
|
|
17
|
+
server.registerTool("sqlite_open", {
|
|
18
|
+
title: "Open SQLite Database",
|
|
19
|
+
description: `Open an SQLite database file at the specified path.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
- file_path (string): Absolute or relative path to the .db / .sqlite file.
|
|
15
23
|
|
|
16
24
|
Returns:
|
|
17
25
|
{ "success": boolean, "message": string }
|
|
18
26
|
|
|
19
27
|
Examples:
|
|
20
28
|
- "Open the users database" -> file_path="/data/users.db"
|
|
21
|
-
|
|
22
|
-
Error Handling:
|
|
29
|
+
|
|
30
|
+
Error Handling:
|
|
23
31
|
- Returns success=false with message if the file cannot be opened.`,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Returns:
|
|
49
|
-
{ "success": boolean, "message": string }
|
|
50
|
-
|
|
51
|
-
Error Handling:
|
|
32
|
+
inputSchema: {
|
|
33
|
+
file_path: z
|
|
34
|
+
.string()
|
|
35
|
+
.min(1, "file_path is required")
|
|
36
|
+
.describe("Path to the SQLite database file"),
|
|
37
|
+
},
|
|
38
|
+
annotations: {
|
|
39
|
+
readOnlyHint: false,
|
|
40
|
+
destructiveHint: false,
|
|
41
|
+
idempotentHint: true,
|
|
42
|
+
openWorldHint: false,
|
|
43
|
+
},
|
|
44
|
+
}, async ({ file_path }) => {
|
|
45
|
+
const result = sqliteManager.open(file_path);
|
|
46
|
+
return {
|
|
47
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
48
|
+
structuredContent: result,
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
// ─── sqlite_close ──────────────────────────────────────────────
|
|
52
|
+
server.registerTool("sqlite_close", {
|
|
53
|
+
title: "Close SQLite Database",
|
|
54
|
+
description: `Close the currently open SQLite database connection.
|
|
55
|
+
|
|
56
|
+
Returns:
|
|
57
|
+
{ "success": boolean, "message": string }
|
|
58
|
+
|
|
59
|
+
Error Handling:
|
|
52
60
|
- Returns success=false if no database is currently open.`,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
inputSchema: {},
|
|
62
|
+
annotations: {
|
|
63
|
+
readOnlyHint: false,
|
|
64
|
+
destructiveHint: false,
|
|
65
|
+
idempotentHint: true,
|
|
66
|
+
openWorldHint: false,
|
|
67
|
+
},
|
|
68
|
+
}, async () => {
|
|
69
|
+
const result = sqliteManager.close();
|
|
70
|
+
return {
|
|
71
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
72
|
+
structuredContent: result,
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
}
|
|
67
76
|
// ─── sqlite_status ─────────────────────────────────────────────
|
|
68
77
|
server.registerTool("sqlite_status", {
|
|
69
78
|
title: "SQLite Database Status",
|
package/dist/tools/sqlite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/tools/sqlite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sqlite-mcp
|
|
3
|
-
description: A skill specialized in operating SQLite databases. Use this skill when users mention "query database", "read .db or .sqlite files", "store structured data in SQLite", or need to perform SQL operations. This skill provides functionality to open/close databases, execute SQL queries (SELECT), perform write operations (INSERT/UPDATE/DELETE), and explore table schemas.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# SQLite MCP Skill
|
|
7
|
-
|
|
8
|
-
This skill allows you to interact with SQLite databases through a series of MCP tools.
|
|
9
|
-
|
|
10
|
-
## Core Workflow
|
|
11
|
-
|
|
12
|
-
### 1. Open Database
|
|
13
|
-
Before any operation, you must use `sqlite_open` to open the database file.
|
|
14
|
-
- **Tool**: `sqlite_open`
|
|
15
|
-
- **Parameters**: `file_path` (Absolute or relative path)
|
|
16
|
-
|
|
17
|
-
### 2. Explore Structure (Optional)
|
|
18
|
-
If the database content is unclear, you can list tables or view table definitions first.
|
|
19
|
-
- **List Tables**: `sqlite_list_tables`
|
|
20
|
-
- **View Structure**: `sqlite_describe_table` (requires `table_name`)
|
|
21
|
-
|
|
22
|
-
### 3. Data Operation
|
|
23
|
-
- **Read Data**: Use `sqlite_query` to execute `SELECT` statements.
|
|
24
|
-
- **Write Data**: Use `sqlite_execute` to execute `INSERT`, `UPDATE`, `DELETE`, or DDL statements (e.g., `CREATE TABLE`).
|
|
25
|
-
- **Parameterized Queries**: It is recommended to use the `params` parameter (e.g., `{ ":id": 1 }`) to prevent SQL injection.
|
|
26
|
-
|
|
27
|
-
### 4. Check Status
|
|
28
|
-
You can use `sqlite_status` at any time to confirm the current database path and connection status.
|
|
29
|
-
|
|
30
|
-
### 5. Close Database
|
|
31
|
-
After work is finished, use `sqlite_close` to release resources.
|
|
32
|
-
|
|
33
|
-
## Best Practices
|
|
34
|
-
- **Security First**: Prioritize parameterized queries over direct SQL string concatenation.
|
|
35
|
-
- **Transaction Management**: Ensure logical consistency for multi-step write operations.
|
|
36
|
-
- **Path Handling**: Ensure correct path formatting (supports `/` or `\\`).
|
|
37
|
-
- **Error Handling**: If an operation fails, check `sqlite_status` to ensure the database is correctly opened.
|