7个版本 (破坏性更新)

0.7.0 2021年12月16日
0.6.0 2021年12月5日
0.5.0 2021年12月5日
0.4.0 2021年9月21日
0.1.0 2021年8月23日

#1813 in 数据库接口

ISC许可证

110KB
2.5K SLoC

BaseX Logo

Build Status Code Coverage Current Crates.io Version Documentation Current Crates.io Downloads

本库是开源XML数据库服务器和XQuery处理器的客户端实现,即BaseX

兼容8.x和9.x版本。

安装

将库添加到你的Cargo.toml依赖列表中,如下所示

[dependencies]
basex = "0.7.0"

使用方法

1. 设置数据库服务器

首先,你需要有一个正在运行的BaseX服务器。如果你想尝试它,你可以立即使用docker。

docker run -p 1984:1984 basex/basexhttp:9.5.2

每个示例都可以使用这个服务器配置来运行。

2. 连接到服务器

在你可以对数据库服务器进行任何操作之前,你需要建立连接并授权。通常,你可以通过调用Client::connect来完成此操作。如果你得到Ok结果,你将得到一个Client实例。拥有其实例保证了与服务器的开放会话。

let client = Client::connect("localhost", 1984, "admin", "admin")?;

你现在可以发送命令。

3. 打开数据库

要运行查询,你需要打开一个数据库。

3.1. 创建新数据库

创建数据库也会打开它。在创建调用后跟随without_inputwith_input,可以可选地指定初始XML资源。

let info = client.create("coolbase")?.with_input(&mut xml)?;

3.2. 打开现有数据库

使用Client::execute和命令OPEN [name]

let (client, info) = client.execute("OPEN coolbase")?.close()?;

4. 运行查询

除了运行命令外,您还可以使用XQuery语法运行查询,这是最重要的用例。

  1. 使用Client::query创建新查询。这会将会话置于查询模式。
  2. 可选地,使用Query::bind绑定参数。
  3. 使用Query::execute执行它。
  4. 使用Query::close关闭查询。

示例

以下示例创建了一个名为"lambada"的数据库,并带有初始XML资源,然后计算Root节点的所有一级子节点。

use basex::{Client, ClientError};
use std::io::Read;

fn main() -> Result<(), ClientError> {
    let mut client = Client::connect("localhost", 1984, "admin", "admin")?;
    let info = client.create("lambada")?
        .with_input("<Root><Text/><Lala/><Papa/></Root>")?;
    assert!(info.starts_with("Database 'lambada' created"));

    let query = client.query("count(/Root/*)")?;

    let mut result = String::new();
    let mut response = query.execute()?;
    response.read_to_string(&mut result)?;
    assert_eq!(result, "3");

    let mut query = response.close()?;
    query.close()?;
    Ok(())
}

许可证

该库受ISC许可。

依赖项