Trait odbc_api::ParameterRefCollection
source · [−]pub unsafe trait ParameterRefCollection {
fn parameter_set_size(&self) -> usize;
unsafe fn bind_parameters_to(
&mut self,
stmt: &mut impl Statement
) -> Result<(), Error>;
}
Expand description
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 = Environment::new()?;
let mut conn = env.connect("YourDatabase", "SA", "My@Test@Password1")?;
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 Parameter
s implement this trait, too.
use odbc_api::Environment;
let env = Environment::new()?;
let mut conn = env.connect("YourDatabase", "SA", "My@Test@Password1")?;
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 Parameter
s.
use odbc_api::Environment;
let env = Environment::new()?;
let mut conn = env.connect("YourDatabase", "SA", "My@Test@Password1")?;
let params = [1980, 2000];
if let Some(cursor) = conn.execute(
"SELECT year, name FROM Birthdays WHERE ? < year < ?;",
¶ms[..])?
{
// Use cursor to process query results.
}
Safety
Instances of this type are passed by value, so this type can be implemented by both constant and
mutabale references. Implementers should take care that the values bound by bind_parameters_to
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.
Required methods
fn parameter_set_size(&self) -> usize
fn parameter_set_size(&self) -> usize
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.