Rust语言接口简介¶
Rust 是一门帮助你编写更快、更可靠软件的编程语言。高层工程学与底层控制在其他编程语言设计 中往往是相互矛盾的;通过平很强大的技术能力与优秀的开发体验,Rust 提供了控制底层细节(比 如内存使用)的选择,并免受通常随之而来的所有烦恼。
Crates.io平台中有多个通过odbc驱动访问数据库的crate,比如
odbc : 0.17.0
rs-odbc : 0.1.0
odbc-api : 0.45.1
从crate活跃度看,odbc-api的活跃度较高,应用访问较广一些,本文将以odbc-api来讲解如何通过odbc-api来访问神通数据库。
odbc-api接口依赖情况如下,依赖的环境是运行必须的,因此需要注意:
注解
由于基于cargo进行rust编程,cargo要求所有引用的crate都必须是发布到crates.io平台上的,因此离线部署odbc-api会非常麻烦。
odbc环境安装¶
Windows下需要注册好神通数据库的odbc驱动,并做好可连接的校验;
Linux下需要安装好unixodbc,同时注册好神通数据库的odbc驱动,做好可连接的验证。
详细参考神通数据库的odbc程序员开发手册中在windows和Linux环境下下的配置内容。
odbc-api安装¶
开发在项目文件Cargo.toml中添加依赖名称如下:
[dependencies]
odbc-api = "0.45.1"
在编译项目时,会下载odbc-api及其相关依赖,下载后的路径一般在cargo的工作目录中,比如:
Linux环境下的root用户,carog的工作目录为/root/.cargo/
Windows环境下的administrator用户,cargo的工作目录为C:UsersAdministrator.cargo
使用odbc-api访问数据库的demo¶
创建一个cargo项目test_rust_odbc
1)创建项目:
cargo new test_rust_odbc --bin
2)修改代码
进入到test_rust_odbc项目目录,会有一个Cargo.toml文件,修改文件如下:
修改src/main.rs文件,输入以下内容:
use lazy_static::lazy_static;
use odbc_api::{
buffers,
buffers::TextColumn,
handles::{CDataMut, Statement},
Connection, Cursor, Environment, Error, RowSetBuffer, U16Str,
};
lazy_static! {
pub static ref ENV: Environment = {
Environment::new().unwrap()
};
}
fn main()-> Result<(), odbc_api::Error> {
let connection_string = "
Driver={OSCAR ODBC DRIVER};\
Database=osrdb;\
Server=localhost;\
Port=2003;\
UID=SYSDBA;\
PWD=szoscar55;\
";
let mut conn = ENV.connect_with_connection_string(connection_string)?;
let drop_table = "DROP TABLE IF EXISTS test";
conn.execute(&drop_table, ())?;
let create_table = "create table test( a int ,b varchar(30))";
conn.execute(&create_table, ())?;
let mut insert_table = "insert into test values( 1 ,'a')";
conn.execute(&insert_table, ())?;
insert_table = "insert into test values( 2 ,'b')";
conn.execute(&insert_table, ())?;
let query = "SELECT * FROM test";
let cursor = conn.execute(&query, ())?;
println!("Hello, world!");
Ok(())
}
3)编译
进入test_rust_odbc项目目录下,在终端中输入:
cargo build
4)执行
进入test_rust_odbc项目目录下,在终端中输入:
cargo run
执行成功则打印Hello, world!。