Trait odbc_api::ParameterCollection[][src]

pub unsafe trait ParameterCollection {
    fn parameter_set_size(&self) -> u32;
unsafe fn bind_parameters_to(
        self,
        stmt: &mut StatementImpl<'_>
    ) -> Result<(), Error>; }

SQL Parameters used to execute a query.

ODBC allows to place question marks (?) in the statement text as placeholders. For each such placeholder a parameter needs to be bound to the statement before executing it.

Examples

This trait is implemented by single parameters.

use odbc_api::Environment;

let env = unsafe {
    Environment::new()?
};

let mut conn = env.connect("YourDatabase", "SA", "<YourStrong@Passw0rd>")?;
let year = 1980;
if let Some(cursor) = conn.execute("SELECT year, name FROM Birthdays WHERE year > ?;", &year)? {
    // Use cursor to process query results.
}

Tuples of Parameters implement this trait, too.

use odbc_api::Environment;

let env = unsafe {
    Environment::new()?
};

let mut conn = env.connect("YourDatabase", "SA", "<YourStrong@Passw0rd>")?;
let too_old = 1980;
let too_young = 2000;
if let Some(cursor) = conn.execute(
    "SELECT year, name FROM Birthdays WHERE ? < year < ?;",
    (&too_old, &too_young),
)? {
    // Use cursor to congratulate only persons in the right age group...
}

And so do array slices of Parameters.

use odbc_api::Environment;

let env = unsafe {
    Environment::new()?
};

let mut conn = env.connect("YourDatabase", "SA", "<YourStrong@Passw0rd>")?;
let params = [1980, 2000];
if let Some(cursor) = conn.execute(
    "SELECT year, name FROM Birthdays WHERE ? < year < ?;",
    &params[..])?
{
    // Use cursor to process query results.
}

Required methods

fn parameter_set_size(&self) -> u32[src]

Number of values per parameter in the collection. This can be different from the maximum batch size a buffer may be able to hold. Returning 0 will cause the the query not to be executed.

unsafe fn bind_parameters_to(
    self,
    stmt: &mut StatementImpl<'_>
) -> Result<(), Error>
[src]

Safety

Implementers should take care that the values bound by this method to the statement live at least for the Duration of self. The most straight forward way of achieving this is of course, to bind members.

Loading content...

Implementations on Foreign Types

impl ParameterCollection for ()[src]

impl<A: Parameter> ParameterCollection for (A,)[src]

impl<A: Parameter, B: Parameter> ParameterCollection for (A, B)[src]

impl<A: Parameter, B: Parameter, C: Parameter> ParameterCollection for (A, B, C)[src]

impl<A: Parameter, B: Parameter, C: Parameter, D: Parameter> ParameterCollection for (A, B, C, D)[src]

impl<A: Parameter, B: Parameter, C: Parameter, D: Parameter, E: Parameter> ParameterCollection for (A, B, C, D, E)[src]

impl<A: Parameter, B: Parameter, C: Parameter, D: Parameter, E: Parameter, F: Parameter> ParameterCollection for (A, B, C, D, E, F)[src]

impl<A: Parameter, B: Parameter, C: Parameter, D: Parameter, E: Parameter, F: Parameter, G: Parameter> ParameterCollection for (A, B, C, D, E, F, G)[src]

impl<A: Parameter, B: Parameter, C: Parameter, D: Parameter, E: Parameter, F: Parameter, G: Parameter, H: Parameter> ParameterCollection for (A, B, C, D, E, F, G, H)[src]

impl<A: Parameter, B: Parameter, C: Parameter, D: Parameter, E: Parameter, F: Parameter, G: Parameter, H: Parameter, I: Parameter> ParameterCollection for (A, B, C, D, E, F, G, H, I)[src]

impl<A: Parameter, B: Parameter, C: Parameter, D: Parameter, E: Parameter, F: Parameter, G: Parameter, H: Parameter, I: Parameter, J: Parameter> ParameterCollection for (A, B, C, D, E, F, G, H, I, J)[src]

impl<T> ParameterCollection for &[T] where
    T: InputParameter
[src]

Loading content...

Implementors

impl ParameterCollection for &ColumnarRowSet[src]

impl ParameterCollection for &TextRowSet[src]

impl<T> ParameterCollection for T where
    T: Parameter
[src]

Loading content...