31个版本 (破坏性更新)

0.24.0 2024年1月10日
0.23.2 2023年11月2日
0.23.1 2023年10月22日
0.23.0 2023年1月31日
0.4.0 2020年7月30日

#797 in 数据库接口

Download history 1/week @ 2024-04-22 23/week @ 2024-05-13 123/week @ 2024-05-20 135/week @ 2024-05-27 146/week @ 2024-06-03 112/week @ 2024-06-10 105/week @ 2024-06-17 54/week @ 2024-06-24 59/week @ 2024-07-01 70/week @ 2024-07-08 102/week @ 2024-07-15 91/week @ 2024-07-22 187/week @ 2024-07-29 96/week @ 2024-08-05

每月476次 下载
3 crates 中使用

MIT 许可证

435KB
9K SLoC

Rust Firebird客户端

Build Crate API github sponsors

一个用于 Firebird 的客户端库,用于 Rust 编程语言

如何使用

示例

目标

  • Rust Api
  • 与fbclient的动态链接
  • 动态加载fbclient(.dll或.so)
  • ARM支持
  • Firebird嵌入式支持

ko-fi


lib.rs:

Rust Firebird客户端

如何使用它

1. 首先选择你想要的lib版本

// To use the offcial ('native') Firebird client .dll/.so/.dylib
// (needs to find dll at build time)
rsfbclient::builder_native().with_dyn_link()
// Or using dynamic loading
rsfbclient::builder_native().with_dyn_load("/my/firebird/here/lib/libfbclient.so")
// Or using the pure rust implementation
rsfbclient::builder_pure_rust()

2. 设置你的连接参数

// For a remote server, using a dynamically linked native client
let mut conn = rsfbclient::builder_native()
    .with_dyn_link()
    .with_remote()
    .host("my.host.com.br")
    .db_name("awesome.fdb")
    .connect()?
// Or if you need a embedded/local only access
let mut conn = rsfbclient::builder_native()
    .with_dyn_link()
    .with_embedded()
    .db_name("/path/to/awesome.fdb")
    .connect()?

你还可以选择一个字符串连接配置

// Using the native Firebird client
rsfbclient::builder_native()
    .from_string("firebird://SYSDBA:[email protected]:3050/awesome.fdb?charset=ascii")
// Or using the pure rust implementation
rsfbclient::builder_pure_rust()
    .from_string("firebird://SYSDBA:[email protected]:3050/awesome.fdb?charset=ascii")

3. 现在你可以使用这个库了

let rows = conn.query_iter("select col_a, col_b, col_c from test", ())?;
...

简单的连接/事务

有时你需要将 ConnectionTransaction 类型存储在结构体字段中,而不必关心Firebird客户端的变体。为此,你可以使用 SimpleConnectionSimpleTransaction 类型。

要使用,只需要使用 From 特性,调用 into() 方法。示例

let mut conn: SimpleConnection = rsfbclient::builder_native()
    .with_dyn_link()
    .with_remote()
    .host("my.host.com.br")
    .db_name("awesome.fdb")
    .connect()?
    .into();

Cargo特性

如果需要,所有特性都可以同时使用。

链接

在运行时和编译时将使用官方 fbclient 的动态库。用于已经安装和配置了firebird客户端的系统。

动态加载

可以在运行时通过路径找到官方 fbclient 原生库,不需要在编译时使用库。当需要在未安装firebird客户端的系统上构建时很有用。

纯Rust

使用Firebird线协议的纯Rust实现,根本不需要原生库。对于交叉编译非常有用,允许单个二进制文件部署,无需安装Firebird客户端。

依赖

~8–15MB
~199K SLoC