Struct odbc_api::Preallocated[][src]

pub struct Preallocated<'open_connection> { /* fields omitted */ }

A preallocated SQL statement handle intended for sequential execution of different queries. See crate::Connection::preallocate.

Example

use odbc_api::{Connection, Error};
use std::io::{self, stdin, Read};

fn interactive(conn: &Connection) -> io::Result<()>{
    let mut statement = conn.preallocate().unwrap();
    let mut query = String::new();
    stdin().read_line(&mut query)?;
    while !query.is_empty() {
        match statement.execute(&query, ()) {
            Err(e) => println!("{}", e),
            Ok(None) => println!("No results set generated."),
            Ok(Some(cursor)) => {
                // ...print cursor contents...
            },
        }
        stdin().read_line(&mut query)?;
    }
    Ok(())
}

Implementations

impl<'o> Preallocated<'o>[src]

pub fn execute_utf16(
    &mut self,
    query: &U16Str,
    params: impl ParameterCollection
) -> Result<Option<CursorImpl<'o, &mut StatementImpl<'o>>>, Error>
[src]

Executes an sql statement using a wide string. See Self::execute.

pub fn execute(
    &mut self,
    query: &str,
    params: impl ParameterCollection
) -> Result<Option<CursorImpl<'o, &mut StatementImpl<'o>>>, Error>
[src]

Executes a statement. This is the fastest way to sequentially execute different SQL Statements.

Parameters

  • query: The text representation of the SQL statement. E.g. “SELECT * FROM my_table;”.
  • params: ? may be used as a placeholder in the statement text. You can use () to represent no parameters. Check the crate::parameter module level documentation for more information on how to pass parameters.

Return

Returns Some if a cursor is created. If None is returned no cursor has been created ( e.g. the query came back empty). Note that an empty query may also create a cursor with zero rows. Since we want to reuse the statement handle a returned cursor will not take ownership of it and instead burrow it.

Example

use odbc_api::{Connection, Error};
use std::io::{self, stdin, Read};

fn interactive(conn: &Connection) -> io::Result<()>{
    let mut statement = conn.preallocate().unwrap();
    let mut query = String::new();
    stdin().read_line(&mut query)?;
    while !query.is_empty() {
        match statement.execute(&query, ()) {
            Err(e) => println!("{}", e),
            Ok(None) => println!("No results set generated."),
            Ok(Some(cursor)) => {
                // ...print cursor contents...
            },
        }
        stdin().read_line(&mut query)?;
    }
    Ok(())
}

Auto Trait Implementations

impl<'open_connection> RefUnwindSafe for Preallocated<'open_connection>

impl<'open_connection> !Send for Preallocated<'open_connection>

impl<'open_connection> !Sync for Preallocated<'open_connection>

impl<'open_connection> Unpin for Preallocated<'open_connection>

impl<'open_connection> UnwindSafe for Preallocated<'open_connection>

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.