44 个版本
使用旧的 Rust 2015
0.17.0 | 2020年5月9日 |
---|---|
0.16.1 | 2019年12月18日 |
0.16.0 | 2019年11月27日 |
0.14.0 | 2019年7月11日 |
0.1.0 | 2016年2月19日 |
#2611 在 数据库接口
882 每月下载量
用于 6 个 Crates (3 直接)
90KB
2K SLoC
安全的 Rust ODBC 封装
用于在 Rust 中编写 ODBC 应用的库。
如果您正在寻找原始的 ODBC FFI 封装,请查看 odbc-safe 和 odbc-sys crate。
文档也在这里可用 here
extern crate odbc;
// Use this crate and set environmet variable RUST_LOG=odbc to see ODBC warnings
extern crate env_logger;
use odbc::*;
use std::io;
use odbc_safe::AutocommitOn;
fn main() {
env_logger::init();
match connect() {
Ok(()) => println!("Success"),
Err(diag) => println!("Error: {}", diag),
}
}
fn connect() -> std::result::Result<(), DiagnosticRecord> {
let env = create_environment_v3().map_err(|e| e.unwrap())?;
let mut buffer = String::new();
println!("Please enter connection string: ");
io::stdin().read_line(&mut buffer).unwrap();
let conn = env.connect_with_connection_string(&buffer)?;
execute_statement(&conn)
}
fn execute_statement<'env>(conn: &Connection<'env, AutocommitOn>) -> Result<()> {
let stmt = Statement::with_parent(conn)?;
let mut sql_text = String::new();
println!("Please enter SQL statement string: ");
io::stdin().read_line(&mut sql_text).unwrap();
match stmt.exec_direct(&sql_text)? {
Data(mut stmt) => {
let cols = stmt.num_result_cols()?;
while let Some(mut cursor) = stmt.fetch()? {
for i in 1..(cols + 1) {
match cursor.get_data::<&str>(i as u16)? {
Some(val) => print!(" {}", val),
None => print!(" NULL"),
}
}
println!("");
}
}
NoData(_) => println!("Query executed, no data returned"),
}
Ok(())
}
依赖项
~3.5MB
~121K SLoC