pub struct Query<'a> { /* private fields */ }
Expand description
A query object with bind parameters.
Implementations§
source§impl<'a> Query<'a>
impl<'a> Query<'a>
sourcepub fn new(sql: impl Into<Cow<'a, str>>) -> Self
pub fn new(sql: impl Into<Cow<'a, str>>) -> Self
Construct a new query object with the given SQL. If the SQL is parameterized, the given number of parameters must be bound to the object before executing.
The sql
can define the parameter placement by annotating them with
@PN
, where N is the index of the parameter, starting from 1
.
sourcepub fn bind(&mut self, param: impl IntoSql<'a> + 'a)
pub fn bind(&mut self, param: impl IntoSql<'a> + 'a)
Bind a new parameter to the query. Must be called exactly as many times as there are parameters in the given SQL. Otherwise the query will fail on execution.
sourcepub async fn execute<'b, S>(
self,
client: &'b mut Client<S>
) -> Result<ExecuteResult>where
S: AsyncRead + AsyncWrite + Unpin + Send,
pub async fn execute<'b, S>( self, client: &'b mut Client<S> ) -> Result<ExecuteResult>where S: AsyncRead + AsyncWrite + Unpin + Send,
Executes SQL statements in the SQL Server, returning the number rows
affected. Useful for INSERT
, UPDATE
and DELETE
statements. See
Client#execute
for a simpler API if the parameters are statically
known.
Example
let mut query = Query::new("INSERT INTO ##Test (id) VALUES (@P1), (@P2), (@P3)");
query.bind("foo");
query.bind(2i32);
query.bind(String::from("bar"));
let results = query.execute(&mut client).await?;
sourcepub async fn query<'b, S>(
self,
client: &'b mut Client<S>
) -> Result<QueryStream<'b>>where
S: AsyncRead + AsyncWrite + Unpin + Send,
pub async fn query<'b, S>( self, client: &'b mut Client<S> ) -> Result<QueryStream<'b>>where S: AsyncRead + AsyncWrite + Unpin + Send,
Executes SQL statements in the SQL Server, returning resulting rows.
Useful for SELECT
statements. See Client#query
for a simpler API
if the parameters are statically known.
Example
let mut query = Query::new("SELECT @P1, @P2, @P3");
query.bind(1i32);
query.bind(2i32);
query.bind(3i32);
let stream = query.query(&mut client).await?;