#数据库驱动 #hana #驱动 #关系型 #异步

hdbconnect_async

一个异步纯Rust数据库驱动程序,用于SAP HANA(TM)

11个不稳定版本 (3个破坏性更新)

0.28.6 2024年6月12日
0.28.5 2024年2月9日
0.28.3 2024年1月19日
0.27.0 2023年12月31日
0.25.1 2023年2月2日

#1183数据库接口

MIT/Apache

1MB
16K SLoC

hdbconnect_async

Latest version Documentation License

一个异步纯Rust SQL驱动程序,用于SAP HANA(TM)。

用法

hdbconnect_async 添加到项目 Cargo.toml 中的依赖部分

[dependencies]
hdbconnect_async = "0.28"

假设您有一个

  • 可通过端口 39013 在主机 hxehost 上访问的HANA,
  • 并且您可以使用用户 HORST 和密码 SeCrEt 登录,

那么一个简单的测试,设置一些表、插入数据并读取它们,可能看起来像这样

use hdbconnect_async::{Connection, HdbResult};

#[tokio::main]
pub async fn main() -> HdbResult<()> {
    let mut connection = Connection::new("hdbsql://HORST:SeCrEt@hxehost:39013").await?;

    // Cleanup if necessary, and set up a test table
    connection.multiple_statements_ignore_err(vec![
        "drop table FOO_SQUARE"
    ]).await;
    connection.multiple_statements(vec![
        "create table FOO_SQUARE ( f1 INT primary key, f2 BIGINT)",
    ]).await?;

    // Insert some test data
    let mut insert_stmt = connection.prepare(
        "insert into FOO_SQUARE (f1, f2) values(?,?)"
    ).await?;

    for i in 0..100 {
        insert_stmt.add_batch(&(i, i * i))?;
    }
    insert_stmt.execute_batch().await?;

    // Read the table data directly into a rust data structure
    let stmt = "select * from FOO_SQUARE order by f1 asc";
    let n_square: Vec<(i32, u64)> =
        connection.query(stmt).await?.try_into().await?;

    // Verify ...
    for (idx, (n, square)) in n_square.into_iter().enumerate() {
        assert_eq!(idx as i32, n);
        assert_eq!((idx * idx) as u64, square);
    }
    Ok(())
}

文档

有关 hdbconnect_async 的完整功能,请参阅 https://docs.rs/hdbconnect_async/

在那里您还可以找到更多代码示例,尤其是在 code_examples 模块的描述中。

TLS

有关从 SAP Cloud Platform 上的 HANA 获取必要的服务器证书的说明,请参阅 HANA in SCP

功能

rocket_pool

添加了 rocket_db_pools 数据库池的实现。

dist_tx

添加了对基于 dist_tx 的分布式事务的支持。

版本

请参阅 变更日志

依赖项

~15–48MB
~875K SLoC