# @adecore/database 中文文档

规范地址：https://npmcn.com/package/%40adecore/database/

版本：0\.57\.0
npm 元数据更新时间：2026-11-07T16:47:07.814Z
中文译文更新时间：2026-11-05T21:14:21.093Z
软件包许可：FSL-1\.1-MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40adecore/database
原文对照：https://npmcn.com/package/%40adecore/database/?lang=original
项目主页：https://adecore.dev/database/
源码仓库：https://github.com/basmilius/adecore

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.5 MB，447 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：4 个
- peer 依赖：react ^19\.3\.0，i18next ^26\.4\.2，react-dom ^19\.3\.0，@adecore/ui ^0\.57\.0，react-i18next ^17\.0\.15
- 首次发布：2026-10-05T18:36:46.337Z
- 最新版本发布：2026-11-07T16:47:07.475Z
- 近 30 天下载量：20041（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：159（近 12 个月 159 个）

## 中文简介

浏览,查询并编辑 SQLite 和 MySQL 数据库: 页面的回放视图,后端的主机和向服务器说话的本地助手.

## 安装

```sh
npm install @adecore/database
```

也可以使用：`pnpm add @adecore/database`、`yarn add @adecore/database`、`bun add @adecore/database`

## README

# @adcore/数据库

[![npm](https://img.shields.io/npm/v/@adecore/database)](https://www.npmjs.com/package/@adecore/database) [![Docs](https://img.shields.io/badge/docs-adecore.dev-blue)](https://adecore.dev/database/)

从桌面应用程序浏览,查询和编辑 SQLite 和 MySQL 或 MariaDB 数据库. 反应视图绘制连接,一个表格树,一个表格的行,它的结构,一个创建和修改表格的设计者,一个查询控制台和一个将它们组合在一起的工作台. 在应用程序后端的宿主和一个与服务器交谈的本地助手做他们背后的工作.

**[每个视图的活演示文件](https://adecore.dev/database/)**

## 安装

```sh
bun add @adecore/database
```

`@adecore/ui`,反应19, `react-dom`, (中文(简体) ), `i18next` 财务报告和审定财务报表 `react-i18next` 是页面的相对关系。 东道主( E)`@adecore/database/host`和协议`@adecore/database/protocol`) 进口其中任何一种.

## 层

```
page            views, createDatabaseClient(transport)
  |
app channel     ipcMain.handle, a utility process, a WebSocket (the app's own, with its own sender check)
  |
backend         createDatabaseHost, spawnHelper          (Bun or Node)
  |
helper          adecore-database                         (native binary, one JSON message per line)
  |
server          SQLite file, MySQL or MariaDB
```

软件包不会在页面和后端之间携带信件. 应用确实如此,通过它已经和已经守护的频道.

## 把它接起来

在后端,每个应用程序创建一个主机,并将每个从频道到它的请求都交给它. 先检查发送者, 并指定请求的主人: 窗口, 套接字 。 当主人去后,释放出.

```ts
import { createDatabaseHost, spawnHelper } from '@adecore/database/host';

const host = createDatabaseHost({
    start: () => spawnHelper(helperPath),
    // Optional: turn down connections the page may not open.
    authorize: (connection) => connection.engine !== 'sqlite' || connection.path.startsWith(dataFolder),
    // Optional: the files the page may export to and import from. Every file is refused without it.
    authorizeFile: (path, access, owner) => isChosenInDialog(owner, access, path),
    // Optional: whether the page may list Docker containers. Refused without it.
    authorizeDiscovery: (kind, owner) => isTrusted(owner)
});

ipcMain.handle('database:request', (event, request) => {
    if (!isTrustedSender(event)) {
        throw new Error('Untrusted sender.');
    }

    return host.handle(request, String(event.sender.id));
});

app.on('web-contents-created', (_event, contents) => {
    const owner = String(contents.id);
    contents.once('destroyed', () => void host.release(owner));
});
```

在页面上,让一个客户端通过发送请求的传输返回回复,然后挂载 `DatabaseProvider` 内部 `UIProvider`数字 :

```tsx
import { createDatabaseClient, DatabaseProvider, TableView } from '@adecore/database';

const client = createDatabaseClient((request) => window.database.request(request));

createRoot(root).render(
    <UIProvider i18n={i18next} formatSource={formatSource}>
        <DatabaseProvider client={client}>
            <TableView connection={connection} schema="main" table="customers" className="h-full" />
        </DatabaseProvider>
    </UIProvider>
);
```

A 类 `Connection` 实值 `{ id, name, config }`。应用程序保存列表,密码在自己的安全存储中;软件包没有存储任何信息.

`DatabaseProvider` 亦取三可选钩入应用. 没有他们,观点就忽略了他们无法做的事情.

```tsx
<DatabaseProvider
    client={client}
    onAction={(action) => openInTab(action)}
    storage={{ get: (key) => localStorage.getItem(key), set: (key, value) => (value === null ? localStorage.removeItem(key) : localStorage.setItem(key, value)) }}
    files={{ save: (options) => window.app.saveFile(options), open: (options) => window.app.openFile(options) }}
>
```

`onAction` 收到一个 `DatabaseAction` 当一个视图想要一个桌子,一个控制台或设计师打开,而应用程序决定它去向. `storage` 保留布局、控制台历史并打开重载标签. `files` 持有应用程序保存并打开导出和导入对话框 。 巢养的供养者从上面拿走它留下的东西 所以 `<DatabaseProvider onAction={...}>` 在一个标签上显示一个动作来自哪个标签.

告诉Tailwind扫描其课程的软件包,旁边是 `@source` 线条 `@adecore/ui`。路径相对 CSS 文件 :

```css
@import 'tailwindcss';
@import '@adecore/ui/theme.css';

@source "../node_modules/@adecore/ui/dist";
@source "../node_modules/@adecore/database/dist";
```

这些话都生活在 `database` 命名空间,英语和荷兰语. `DatabaseProvider` 把它们添加到 i18 次例 `UIProvider`。 。 。 .

## 帮助二进制

助推器是握有数据库驱动器的Rust程序,因此崩溃驱动器无法将后端取下. 安装带来一个预建的: `@adecore/database` 将每个平台的软件包列出为可选依赖( )`@adecore/database-darwin-arm64` 对于苹果硅, `-linux-x64`, (中文(简体) ), `-linux-arm64` 财务报告和审定财务报表 `-win32-x64`),包管理器安装了适合机器的. `helperPath()` 返回路径,或 `null` 当平台没有软件包或可选的依赖关系时被忽略. `ADECORE_DATABASE_HELPER` 用另一座建筑的路径覆盖它.

```ts
import { createDatabaseHost, helperPath, spawnHelper } from '@adecore/database/host';

const path = helperPath();

if (path === null) {
    throw new Error('No prebuilt helper for this platform.');
}

const host = createDatabaseHost({ start: () => spawnHelper(path) });
```

Linux 二进制链接针对glibc 2.35 或更新. 一个需要自己建造的应用程序,为另一个平台或补丁帮助者,用这个文件夹中的货物来建造它,并将路径传递到 `spawnHelper` 相反:

```sh
cargo build --release --locked --manifest-path helper/Cargo.toml
```

二进制是 `helper/target/release/adecore-database`当软件包从 `src` ,例如通过 `bun link`,没有平台软件包有二进制, `helperPath()` 返回该构建.

### 在电子软件中

二进制不能从内部运行 `app.asar` 存档 . `helperPath()` 地图 `app.asar` 改为 `app.asar.unpacked`,所以应用程序解开平台软件包。 与电子建设器:

```json
{
    "asarUnpack": ["node_modules/@adecore/database-*/**"]
}
```

或者复制二进制 `extraResources` 穿过这条路 `spawnHelper`,没有 `helperPath()`。无论哪一种方式,应用程序自己的代码签名和公证覆盖了二进制,所以与应用程序的其余部分一起签署已解开的文件. 一个从另一个机器为一个平台包装的应用程序需要安装在那里的目标平台的软件包.

## 视图和测试

观点是: `ConnectionManager`, (中文(简体) ), `ConnectionForm`, (中文(简体) ), `DatabaseExplorer`, (中文(简体) ), `TableView`, (中文(简体) ), `StructureView`, (中文(简体) ), `TableDesigner`, (中文(简体) ), `QueryConsole` 财务报告和审定财务报表 `DatabaseWorkbench`将探险家放在其他标签旁边 一个连接通过TCP,Unix socket,SSH主机或多克容器到达了MySQL或MariaDB. [文件](https://adecore.dev/database/) 每个视图都有页面和连接、文件、安全和协议指南.

`@adecore/database/testing` 已经 `fakeDatabaseTransport`同一运输机后面的内存服务器,用于演示和应用程序的测试.

## 许可证

FSL-1.1-MIT,见 [自由主义](https://npmcn.com/package/%40adecore/database/LICENSE)。 。 。 .

## 常见问题

### @adecore/database 是什么？

浏览,查询并编辑 SQLite 和 MySQL 数据库: 页面的回放视图,后端的主机和向服务器说话的本地助手\.

### 如何安装 @adecore/database？

在项目目录运行 npm install @adecore/database，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（^19\.3\.0）、i18next（^26\.4\.2）、react-dom（^19\.3\.0）、@adecore/ui（^0\.57\.0）、react-i18next（^17\.0\.15）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @adecore/database 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @adecore/database 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @adecore/database 可以商用吗？

@adecore/database 使用 FSL-1\.1-MIT 许可。声明的许可为 FSL-1\.1-MIT，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @adecore/database 的下载量有多少？

根据 npm 官方下载统计，@adecore/database 在 2026/10/05 – 2026/11/03 这 30 天内被下载 20,041 次，日均约 668 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @adecore/database 还在维护吗？

最新版本 0\.57\.0 发布于 2026/11/08（今天）；至今共发布 159 个版本，其中过去 12 个月发布了 159 个；首次发布于 2026/10/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

