Struct odbc_api::Environment[][src]

pub struct Environment { /* fields omitted */ }

An ODBC 3.8 environment.

Associated with an Environment is any information that is global in nature, such as:

  • The Environment’s state
  • The current environment-level diagnostics
  • The handles of connections currently allocated on the environment
  • The current stetting of each environment attribute

Creating the environment is the first applications do, then interacting with an ODBC driver manager. There must only be one environment in the entire process.

Implementations

impl Environment[src]

pub unsafe fn new() -> Result<Self, Error>[src]

Entry point into this API. Allocates a new ODBC Environment and declares to the driver manager that the Application wants to use ODBC version 3.8.

Safety

There may only be one ODBC environment in any process at any time. Take care using this function in unit tests, as these run in parallel by default in Rust. Also no library should probably wrap the creation of an odbc environment into a safe function call. This is because using two of these “safe” libraries at the same time in different parts of your program may lead to race condition thus violating Rust’s safety guarantees.

Creating one environment in your binary is safe however.

pub fn connect(
    &self,
    data_source_name: &str,
    user: &str,
    pwd: &str
) -> Result<Connection<'_>, Error>
[src]

Allocates a connection handle and establishes connections to a driver and a data source.

Arguments

  • data_source_name - Data source name. The data might be located on the same computer as the program, or on another computer somewhere on a network.
  • user - User identifier.
  • pwd - Authentication string (typically the password).

Example

use odbc_api::Environment;

// I herby solemnly swear that this is the only ODBC environment in the entire process, thus
// making this call safe.
let env = unsafe {
    Environment::new()?
};

let mut conn = env.connect("YourDatabase", "SA", "<YourStrong@Passw0rd>")?;

pub fn connect_utf16(
    &self,
    data_source_name: &U16Str,
    user: &U16Str,
    pwd: &U16Str
) -> Result<Connection<'_>, Error>
[src]

Allocates a connection handle and establishes connections to a driver and a data source.

Arguments

  • data_source_name - Data source name. The data might be located on the same computer as the program, or on another computer somewhere on a network.
  • user - User identifier.
  • pwd - Authentication string (typically the password).

pub fn connect_with_connection_string(
    &self,
    connection_string: &str
) -> Result<Connection<'_>, Error>
[src]

Allocates a connection handle and establishes connections to a driver and a data source.

An alternative to connect. It supports data sources that require more connection information than the three arguments in connect and data sources that are not defined in the system information.

To find out your connection string try: https://www.connectionstrings.com/

Example

use odbc_api::Environment;

// I herby solemnly swear that this is the only ODBC environment in the entire process, thus
// making this call safe.
let env = unsafe {
    Environment::new()?
};

let connection_string = "
    Driver={ODBC Driver 17 for SQL Server};\
    Server=localhost;\
    UID=SA;\
    PWD=<YourStrong@Passw0rd>;\
";

let mut conn = env.connect_with_connection_string(connection_string)?;

pub fn connect_with_connection_string_utf16(
    &self,
    connection_string: &U16Str
) -> Result<Connection<'_>, Error>
[src]

Allocates a connection handle and establishes connections to a driver and a data source.

An alternative to connect. It supports data sources that require more connection information than the three arguments in connect and data sources that are not defined in the system information.

To find out your connection string try: https://www.connectionstrings.com/

pub fn drivers(&mut self) -> Result<Vec<DriverInfo>, Error>[src]

Get information about available drivers. Only 32 or 64 Bit drivers will be listed, depending on wether you are building a 32 Bit or 64 Bit application.

Example

use odbc_api::Environment;

let mut env = unsafe { Environment::new () }?;
for driver_info in env.drivers()? {
    println!("{:#?}", driver_info);
}

pub fn data_sources(&mut self) -> Result<Vec<DataSourceInfo>, Error>[src]

User and system data sources

Example

use odbc_api::Environment;

let mut env = unsafe { Environment::new () }?;
for data_source in env.data_sources()? {
    println!("{:#?}", data_source);
}

pub fn system_data_sources(&mut self) -> Result<Vec<DataSourceInfo>, Error>[src]

Only system data sources

Example

use odbc_api::Environment;

let mut env = unsafe { Environment::new () }?;
for data_source in env.system_data_sources()? {
    println!("{:#?}", data_source);
}

pub fn user_data_sources(&mut self) -> Result<Vec<DataSourceInfo>, Error>[src]

Only user data sources

Example

use odbc_api::Environment;

let mut env = unsafe { Environment::new () }?;
for data_source in env.user_data_sources()? {
    println!("{:#?}", data_source);
}

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.