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 数据库接口
110KB
2.5K SLoC
本库是开源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_input
或with_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语法运行查询,这是最重要的用例。
- 使用
Client::query
创建新查询。这会将会话置于查询模式。 - 可选地,使用
Query::bind
绑定参数。 - 使用
Query::execute
执行它。 - 使用
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许可。