#r2d2 #pool #odbc #sql #connection-manager

unmaintained r2d2_odbc

ODBC support for the r2d2 connection pool

5 releases (breaking)

Uses old Rust 2015

0.5.0 Dec 18, 2019
0.4.0 Nov 12, 2019
0.3.0 Oct 29, 2019
0.2.0 Jan 22, 2019
0.1.0 Feb 21, 2018

#21 in #odbc

Download history 77/week @ 2024-11-09 48/week @ 2024-11-16 78/week @ 2024-11-23 42/week @ 2024-11-30 83/week @ 2024-12-07 50/week @ 2024-12-14 34/week @ 2024-12-21 9/week @ 2024-12-28 9/week @ 2025-01-04 36/week @ 2025-01-11 36/week @ 2025-01-18 9/week @ 2025-01-25 19/week @ 2025-02-01 29/week @ 2025-02-08 66/week @ 2025-02-15 16/week @ 2025-02-22

130 downloads per month
Used in unidb_odbc

MIT license

9KB
107 lines

r2d2-odbc

ODBC adapter for r2d2 connection pool

https://travis-ci.org/Koka/odbc-rs Appveyor Build status Coverage Status Docs

Example:


extern crate r2d2;
extern crate r2d2_odbc;
extern crate odbc;

use std::thread;
use r2d2_odbc::ODBCConnectionManager;
use odbc::*;

fn main() {
    let manager = ODBCConnectionManager::new("DSN=PostgreSQL");
    let pool = r2d2::Pool::new(manager).unwrap();

    let mut children = vec![];
    for i in 0..10i32 {
        let pool = pool.clone();
        children.push(thread::spawn(move || {
            let pool_conn = pool.get().unwrap();
            let conn = pool_conn.raw();
            let stmt = Statement::with_parent(&conn).unwrap();
            if let Data(mut stmt) = stmt.exec_direct("SELECT version()").unwrap() {
                while let Some(mut cursor) = stmt.fetch().unwrap() {
                    if let Some(val) = cursor.get_data::<&str>(1).unwrap() {
                        println!("THREAD {} {}", i, val);
                    }
                }
            }
        }));
    }

    for child in children {
        let _ = child.join();
    }
}

Dependencies

~3.5–8.5MB
~138K SLoC