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 在 数据库接口
1MB
16K SLoC
hdbconnect_async
一个异步纯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