list_datasources/
list_datasources.rs1extern crate odbc_safe;
3extern crate odbc_sys;
4use odbc_safe::*;
5use odbc_sys::*;
6use std::str::from_utf8;
7
8fn main() {
9
10 let env = Environment::new().unwrap();
11 let mut env = env.declare_version_3().unwrap();
12
13 let mut server_name = [0; 512];
14 let mut description = [0; 512];
15
16 println!("ODBC Data Sources:");
17
18 loop {
19 let (name_length, description_length) =
20 match env.data_sources(SQL_FETCH_NEXT, &mut server_name, &mut description) {
21 ReturnOption::Success(v) => v,
22 ReturnOption::Info(_) => panic!("Buffers not large enough. Truncation occurred."),
23 ReturnOption::NoData(()) => break,
24 ReturnOption::Error(()) => {
25 panic!("Error occurred. Could use diagnostics to learn more")
26 }
27 };
28
29 println!(
30 "\tName: {}\n\tDescription: {}\n",
31 from_utf8(&server_name[..(name_length as usize)]).unwrap(),
32 from_utf8(&description[..(description_length as usize)]).unwrap()
33 );
34 }
35}