#database-driver #hana #driver #relational #serde

hdbconnect

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

79个版本

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.0.26 2016年12月7日

#810数据库接口

Download history 1/week @ 2024-05-17 3/week @ 2024-05-24 6/week @ 2024-05-31 143/week @ 2024-06-07 25/week @ 2024-06-14 1/week @ 2024-07-05 61/week @ 2024-07-26 5/week @ 2024-08-02

每月66 次下载

MIT/Apache

800KB
16K SLoC

hdbconnect

Latest version Documentation License unsafe forbidden

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

如果您需要SAP HANA的异步驱动程序,请查看hdbconnect_async

用法

hdbconnect 添加到项目 Cargo.toml 文件中的依赖项部分

[dependencies]
hdbconnect = "0.28"

假设您有

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

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

use hdbconnect::{Connection, HdbResult};

pub fn main() -> HdbResult<()> {
    let mut connection = Connection::new("hdbsql://HORST:SeCrEt@hxehost:39013")?;

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

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

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

    // 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)?.try_into()?;

    // 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(())
}

文档

文档中包含更多代码示例,尤其是在 code_examples 模块的描述中。

TLS

请参阅HANA in SCP 以获取从SAP云平台上的HANA获取必要服务器证书的说明。

功能

r2d2_pool

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

dist_tx

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

版本

请参阅变更日志

依赖项

~14–24MB
~465K SLoC