pub struct Conn { /* private fields */ }
Expand description
Mysql connection.
Implementations§
source§impl Conn
impl Conn
sourcepub fn ping(&mut self) -> bool
pub fn ping(&mut self) -> bool
Executes COM_PING
on Conn
. Return true
on success or false
on error.
sourcepub fn start_transaction<'a>(
&'a mut self,
consistent_snapshot: bool,
isolation_level: Option<IsolationLevel>,
readonly: Option<bool>
) -> MyResult<Transaction<'a>>
pub fn start_transaction<'a>(
&'a mut self,
consistent_snapshot: bool,
isolation_level: Option<IsolationLevel>,
readonly: Option<bool>
) -> MyResult<Transaction<'a>>
Starts new transaction with provided options.
readonly
is only available since MySQL 5.6.5.
sourcepub fn query<T: AsRef<str>>(&mut self, query: T) -> MyResult<QueryResult<'_>>
pub fn query<T: AsRef<str>>(&mut self, query: T) -> MyResult<QueryResult<'_>>
Implements text protocol of mysql server.
Executes mysql query on Conn
. QueryResult
will borrow Conn
until the end of its scope.
sourcepub fn first<T: AsRef<str>, U: FromRow>(
&mut self,
query: T
) -> MyResult<Option<U>>
pub fn first<T: AsRef<str>, U: FromRow>(
&mut self,
query: T
) -> MyResult<Option<U>>
Performs query and returns first row.
sourcepub fn prepare<T: AsRef<str>>(&mut self, query: T) -> MyResult<Stmt<'_>>
pub fn prepare<T: AsRef<str>>(&mut self, query: T) -> MyResult<Stmt<'_>>
Implements binary protocol of mysql server.
Prepares mysql statement on Conn
. Stmt
will
borrow Conn
until the end of its scope.
This call will take statement from cache if has been prepared on this connection.
JSON caveats
For the following statement you will get somewhat unexpected result {"a": 0}
, because
booleans in mysql binary protocol is TINYINT(1)
and will be interpreted as 0
:
pool.prep_exec(r#"SELECT JSON_REPLACE('{"a": true}', '$.a', ?)"#, (false,));
You should wrap such parameters to a proper json value. For example if you are using rustc_serialize for Json support:
pool.prep_exec(r#"SELECT JSON_REPLACE('{"a": true}', '$.a', ?)"#, (Json::Boolean(false),));
Named parameters support
prepare
supports named parameters in form of :named_param_name
. Allowed characters for
parameter name is [a-z_]
. Named parameters will be converted to positional before actual
call to prepare so SELECT :a-:b, :a*:b
is actually SELECT ?-?, ?*?
.
// Names could be repeated
pool.prep_exec("SELECT :a+:b, :a * :b, ':c'", params!{"a" => 2, "b" => 3}).map(|mut result| {
let row = result.next().unwrap().unwrap();
assert_eq!((5, 6, String::from(":c")), from_row(row));
}).unwrap();
// You can call named statement with positional parameters
pool.prep_exec("SELECT :a+:b, :a*:b", (2, 3, 2, 3)).map(|mut result| {
let row = result.next().unwrap().unwrap();
assert_eq!((5, 6), from_row(row));
}).unwrap();
// You must pass all named parameters for statement
let err = pool.prep_exec("SELECT :name", params!{"another_name" => 42}).unwrap_err();
match err {
DriverError(e) => {
assert_eq!(MissingNamedParameter("name".into()), e);
}
_ => unreachable!(),
}
// You can't call positional statement with named parameters
let err = pool.prep_exec("SELECT ?", params!{"first" => 42}).unwrap_err();
match err {
DriverError(e) => assert_eq!(NamedParamsForPositionalQuery, e),
_ => unreachable!(),
}
// You can't mix named and positional parameters
let err = pool.prepare("SELECT :a, ?").unwrap_err();
match err {
DriverError(e) => assert_eq!(MixedParams, e),
_ => unreachable!(),
}
sourcepub fn prep_exec<A, T>(
&mut self,
query: A,
params: T
) -> MyResult<QueryResult<'_>>where
A: AsRef<str>,
T: Into<Params>,
pub fn prep_exec<A, T>(
&mut self,
query: A,
params: T
) -> MyResult<QueryResult<'_>>where
A: AsRef<str>,
T: Into<Params>,
Prepares and executes statement in one call. See ‘Conn::prepare’
This call will take statement from cache if has been prepared on this connection.
sourcepub fn first_exec<Q, P, T>(&mut self, query: Q, params: P) -> MyResult<Option<T>>where
Q: AsRef<str>,
P: Into<Params>,
T: FromRow,
pub fn first_exec<Q, P, T>(&mut self, query: Q, params: P) -> MyResult<Option<T>>where
Q: AsRef<str>,
P: Into<Params>,
T: FromRow,
Executes statement and returns first row.
sourcepub fn set_local_infile_handler(&mut self, handler: Option<LocalInfileHandler>)
pub fn set_local_infile_handler(&mut self, handler: Option<LocalInfileHandler>)
Sets a callback to handle requests for local files. These are
caused by using LOAD DATA LOCAL INFILE
queries. The
callback is passed the filename, and a Write
able object
to receive the contents of that file.
Specifying None
will reset the handler to the one specified
in the Opts
for this connection.
pub fn no_backslash_escape(&self) -> bool
Trait Implementations§
source§impl GenericConnection for Conn
impl GenericConnection for Conn
source§fn query<T: AsRef<str>>(&mut self, query: T) -> MyResult<QueryResult<'_>>
fn query<T: AsRef<str>>(&mut self, query: T) -> MyResult<QueryResult<'_>>
Conn#query
. Read moresource§fn first<T: AsRef<str>, U: FromRow>(&mut self, query: T) -> MyResult<Option<U>>
fn first<T: AsRef<str>, U: FromRow>(&mut self, query: T) -> MyResult<Option<U>>
Conn#first
. Read moresource§fn prepare<T: AsRef<str>>(&mut self, query: T) -> MyResult<Stmt<'_>>
fn prepare<T: AsRef<str>>(&mut self, query: T) -> MyResult<Stmt<'_>>
Conn#prepare
. Read more