# pp-db-runner **Repository Path**: zypsoft/pp-db-runner ## Basic Information - **Project Name**: pp-db-runner - **Description**: vscode插件,批量执行sql语句 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-07 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SSA DB Runner SSA DB Runner 是一个轻量化 VS Code 插件,提供多数据库连接管理与批量 SQL 执行能力。 扩展主进程位于 `src/`,Webview 前端位于 `packages/webview-ui/`,使用 Vue 3 + Vite 构建并输出到 `resources/webview-ui/`。 ## 标杆项目 https://zh.database-client.com/document ## 功能亮点 - 支持 MySQL / PostgreSQL / SQL Server / SQLite - TreeView 侧边栏管理连接(内容区“添加连接”按钮、编辑、删除、测试、连接/断开) - 自动识别 `.sql` 文件并显示批量执行入口 - 多选目标数据库顺序执行 SQL 脚本 - 实时执行日志(执行中/成功/失败) - 支持中途取消执行任务 - 连接信息加密存储(globalState) ## 安装与启动 ```bash npm install npm run compile ``` 在 VS Code 中按 `F5` 启动 Extension Development Host。 ## 使用步骤 1. 打开侧边栏“数据库管理器”,点击内容区“添加连接”。 2. 在右侧弹出的连接配置面板中填写数据库类型、IP/主机、端口等信息。 3. 测试连接后保存。 4. 打开 `.sql` 文件。 5. 点击编辑器标题栏按钮“批量执行 SQL”,选择目标数据库并确认执行。 6. 在“SQL 执行日志”查看执行详情。 7. 需要时可执行“取消执行”。 ## 连接配置说明 ### 通用数据库 - 别名 - 数据库类型 - 主机 - 端口 - 用户名 - 密码(加密存储) - 数据库名 ### SQLite - 别名 - SQLite 文件路径 ## 开发命令 ```bash npm run compile npm run watch npm run lint npm run build:webview npm run dev:webview ``` ## 调试 - 调试配置文件:`.vscode/launch.json` - 启动方式:在 VS Code 中按 `F5` ## 注意事项 - 日志中不会输出密码明文。 - 若某个目标库执行失败,不会导致扩展进程崩溃。 - 事务回滚策略可在执行时按提示选择。 ## 如何将数据库管理器加回资源管理器 1. 在 `package.json` 的 `contributes.views` 中增加 `explorer` 节点: ```json "views": { "explorer": [ { "id": "ssaDbRunner.dbManager", "name": "数据库管理器", "visibility": "visible", "icon": "resources/database.svg" } ], "ssaDbRunnerContainer": [ { "id": "ssaDbRunner.dbManagerSide", "name": "数据库管理器", "visibility": "visible", "icon": "resources/database.svg" } ] } ``` 2. 在 `package.json` 的 `viewsWelcome` 里增加 `ssaDbRunner.dbManager` 的欢迎入口: ```json { "view": "ssaDbRunner.dbManager", "contents": "[添加连接](command:ssaDbRunner.addConnection)" } ``` 3. 在 `src/extension.ts` 的激活流程里注册: ```ts vscode.window.registerTreeDataProvider('ssaDbRunner.dbManager', treeProvider); ``` 4. 在 `src/extension.ts` 的 `forceOpenDbManagerView` 候选命令中恢复: ```ts 'workbench.actions.treeView.ssaDbRunner.dbManager.focus', 'ssaDbRunner.dbManager.focus', ``` 5. 若需要统一菜单行为,可将 `package.json` 中菜单 `when` 条件改回同时支持两个视图: ```text view == ssaDbRunner.dbManager || view == ssaDbRunner.dbManagerSide ``` ## Webview 子项目架构约定 为保证后续功能迭代一致性,建议遵循以下边界与通信规范。 ### 1. 职责边界 - 扩展侧(`src/`)负责:命令注册、TreeView、数据库连接与执行、配置持久化、Webview 生命周期与消息分发。 - 前端侧(`packages/webview-ui/`)负责:Vue 页面渲染、交互逻辑、表单体验校验、样式与组件复用。 ### 2. 页面加载链路 1. 扩展命令触发(如新增/编辑连接),创建 `WebviewPanel`。 2. 扩展侧通过 `getWebviewHtml` 注入前端入口 `app.js` 与启动参数 `bootstrap`。 3. 前端在 `main.ts` 中执行 `createApp(...).mount('#app')`。 4. 根组件根据 `bootstrap.view` 选择渲染对应页面(如连接表单、日志页)。 ### 3. 扩展与前端通信规范 - 初始化数据:扩展侧通过 `window.__SSA_DB_RUNNER_BOOTSTRAP__` 单向注入。 - 页面动作:前端通过 `postMessage` 发送 `{ type, payload }`。 - 业务处理:扩展侧统一监听 `onDidReceiveMessage`,执行业务后反馈状态。 ### 4. 校验与安全分层 - 前端做体验校验:必填、格式、提示文案。 - 扩展侧做最终校验:参数合法性、执行前检查、错误兜底。 - 敏感信息(如密码)不在前端持久化,统一在扩展侧加密存储。 ### 5. 演进建议 - 新增 UI 功能优先放在 `packages/webview-ui/`,避免回退到多步 InputBox/QuickPick。 - 业务逻辑集中在 `src/service/`,前端只做展示与交互。 - 消息类型保持稳定,建议统一命名风格(如 `connection.submit`、`logs.clear`)。