Struct sqlx_core::query::Query

source ·
pub struct Query<'q, DB: Database, A> { /* private fields */ }
Expand description

Raw SQL query with bind parameters. Returned by query.

Implementations§

source§

impl<'q, DB: Database> Query<'q, DB, <DB as HasArguments<'q>>::Arguments>

source

pub fn bind<T: 'q + Send + Encode<'q, DB> + Type<DB>>(self, value: T) -> Self

Bind a value for use with this SQL query.

If the number of times this is called does not match the number of bind parameters that appear in the query (? for most SQL flavors, $1 .. $N for Postgres) then an error will be returned when this query is executed.

There is no validation that the value is of the type expected by the query. Most SQL flavors will perform type coercion (Postgres will return a database error).

source§

impl<'q, DB, A> Query<'q, DB, A>where DB: Database + HasStatementCache,

source

pub fn persistent(self, value: bool) -> Self

If true, the statement will get prepared once and cached to the connection’s statement cache.

If queried once with the flag set to true, all subsequent queries matching the one with the flag will use the cached statement until the cache is cleared.

Default: true.

source§

impl<'q, DB, A> Query<'q, DB, A>where DB: Database, A: 'q + IntoArguments<'q, DB> + Send,

source

pub fn map<F, O>( self, f: F ) -> Map<'q, DB, impl FnMut(DB::Row) -> Result<O, Error> + Send, A>where F: FnMut(DB::Row) -> O + Send, O: Unpin,

Map each row in the result to another type.

See try_map for a fallible version of this method.

The query_as method will construct a mapped query using a FromRow implementation.

source

pub fn try_map<F, O>(self, f: F) -> Map<'q, DB, F, A>where F: FnMut(DB::Row) -> Result<O, Error> + Send, O: Unpin,

Map each row in the result to another type.

The query_as method will construct a mapped query using a FromRow implementation.

source

pub async fn execute<'e, 'c: 'e, E>( self, executor: E ) -> Result<DB::QueryResult, Error>where A: 'e, E: Executor<'c, Database = DB>, 'q: 'e,

Execute the query and return the total number of rows affected.

source

pub async fn execute_many<'e, 'c: 'e, E>( self, executor: E ) -> BoxStream<'e, Result<DB::QueryResult, Error>>where A: 'e, E: Executor<'c, Database = DB>, 'q: 'e,

Execute multiple queries and return the rows affected from each query, in a stream.

source

pub fn fetch<'e, 'c: 'e, E>( self, executor: E ) -> BoxStream<'e, Result<DB::Row, Error>>where A: 'e, E: Executor<'c, Database = DB>, 'q: 'e,

Execute the query and return the generated results as a stream.

source

pub fn fetch_many<'e, 'c: 'e, E>( self, executor: E ) -> BoxStream<'e, Result<Either<DB::QueryResult, DB::Row>, Error>>where A: 'e, E: Executor<'c, Database = DB>, 'q: 'e,

Execute multiple queries and return the generated results as a stream from each query, in a stream.

source

pub async fn fetch_all<'e, 'c: 'e, E>( self, executor: E ) -> Result<Vec<DB::Row>, Error>where A: 'e, E: Executor<'c, Database = DB>, 'q: 'e,

Execute the query and return all the generated results, collected into a Vec.

source

pub async fn fetch_one<'e, 'c: 'e, E>( self, executor: E ) -> Result<DB::Row, Error>where A: 'e, E: Executor<'c, Database = DB>, 'q: 'e,

Execute the query and returns exactly one row.

source

pub async fn fetch_optional<'e, 'c: 'e, E>( self, executor: E ) -> Result<Option<DB::Row>, Error>where A: 'e, E: Executor<'c, Database = DB>, 'q: 'e,

Execute the query and returns at most one row.

Trait Implementations§

source§

impl<'q, DB, A> Execute<'q, DB> for Query<'q, DB, A>where DB: Database, A: Send + IntoArguments<'q, DB>,

source§

fn sql(&self) -> &'q str

Gets the SQL that will be executed.
source§

fn statement(&self) -> Option<&<DB as HasStatement<'q>>::Statement>

Gets the previously cached statement, if available.
source§

fn take_arguments(&mut self) -> Option<<DB as HasArguments<'q>>::Arguments>

Returns the arguments to be bound against the query string. Read more
source§

fn persistent(&self) -> bool

Returns true if the statement should be cached.

Auto Trait Implementations§

§

impl<'q, DB, A> RefUnwindSafe for Query<'q, DB, A>where A: RefUnwindSafe, DB: RefUnwindSafe, <DB as HasStatement<'q>>::Statement: RefUnwindSafe,

§

impl<'q, DB, A> Send for Query<'q, DB, A>where A: Send,

§

impl<'q, DB, A> Sync for Query<'q, DB, A>where A: Sync, DB: Sync,

§

impl<'q, DB, A> Unpin for Query<'q, DB, A>where A: Unpin, DB: Unpin,

§

impl<'q, DB, A> UnwindSafe for Query<'q, DB, A>where A: UnwindSafe, DB: UnwindSafe, <DB as HasStatement<'q>>::Statement: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V