odbc-iter
is a Rust high level database access library based on odbc
crate that uses native ODBC drivers to access a variety of databases.
With this library you can:
- connect to any database supporting ODBC standard (e.g. via
unixodbc
library and ODBC database driver), - run one-off, prepared or parametrized queries,
- iterate result set via standard
Iterator
interface, - automatically convert rows into:
- tuples of Rust standard types,
- custom type implementing a trait,
- vector of dynamically typed values,
- create thread local connections for multithreaded applications.
Things still missing:
- Full support for binary encoded NUMERICAL type (decimals) - current
Decimal
implementation depends on parsing string representation of the values (can be enabled withrust_decimal
feature). - Rest of this list - please open issue in
GitHub
issue tracker for missing functionality, bugs, etc..
Example usage
Connect and run one-off queries with row type conversion
use ;
// Connect to database using connection string
let connection_string = var
.expect;
let mut connection = connect
.expect;
// Handle statically guards access to connection and provides query functionality
let mut db = connection.handle;
// Get single row single column value
println!;
// Iterate rows with single column
for row in db.
.expect
// Prints:
// hello world
// foo bar
// Iterate rows with multiple columns
for row in db.
.expect
// Prints:
// hello world 24
// foo bar 32
// Iterate rows with dynamically typed values using `ValueRow` type that can represent
// any row
for row in db.
.expect
// Prints:
// [Some(String("hello world")), Some(Tinyint(24))]
// [Some(String("foo bar")), Some(Tinyint(32))]