Skip to main content

connect_pool/
connect_pool.rs

1extern crate r2d2;
2
3use std::thread;
4use ibm_db::{ODBCConnectionManager,Statement,ResultSetState::Data};
5
6fn main() {
7    // TODO: Update with your actual database connection details
8    let manager = ODBCConnectionManager::new("DRIVER={IBM DB2 ODBC DRIVER};DATABASE=SAMPLE;HOSTNAME=db.example.com;PORT=50000;UID=db_user;PWD=YourPassword123");
9    let pool = r2d2::Pool::new(manager).unwrap();
10
11    let mut children = vec![];
12    for i in 0..10i32 {
13        let pool = pool.clone();
14        let pool_conn = pool.get().unwrap();
15        children.push(thread::spawn(move || {
16            let conn = pool_conn.raw();
17            let stmt = Statement::with_parent(&conn).unwrap();
18            if let Data(mut stmt) = stmt.exec_direct("select * from dbtest.GLWTACT").unwrap() {
19                while let Some(mut cursor) = stmt.fetch().unwrap() {
20                    if let Some(val) = cursor.get_data::<&str>(1).unwrap() {
21                        println!("THREAD {} {}", i, val);
22                    }
23                }
24            }
25        }));
26    }
27
28    for child in children {
29        let _ = child.join();
30    }
31}