pub struct PreparedStatement<'conn> { /* private fields */ }Expand description
A handle to a server-side prepared statement.
Construct via Connection::prepare or
Connection::prepare_typed. Holding this type keeps the statement
allocated on the server; it is released automatically when the handle
is dropped.
§Reuse
A single PreparedStatement can be executed many times with different
parameter values — the server caches the parsed plan. This is the
primary reason to use prepared statements over
Connection::query_params for loops over user input.
Implementations§
Source§impl<'conn> PreparedStatement<'conn>
impl<'conn> PreparedStatement<'conn>
Sourcepub fn param_count(&self) -> usize
pub fn param_count(&self) -> usize
Returns the number of parameters the statement expects.
Sourcepub fn param_types(&self) -> &[Oid]
pub fn param_types(&self) -> &[Oid]
Returns the parameter type OIDs (as the server inferred or the
caller explicitly passed to Connection::prepare_typed).
Sourcepub fn schema(&self) -> &ResultSchema
pub fn schema(&self) -> &ResultSchema
Returns the result-column schema. Always available — it was captured during the Parse/Describe at prepare time.
Sourcepub fn query(&self, params: &[&dyn ToSqlParam]) -> Result<Rowset<'conn>>
pub fn query(&self, params: &[&dyn ToSqlParam]) -> Result<Rowset<'conn>>
Executes the statement and returns a streaming Rowset.
Memory stays bounded to one chunk regardless of result size —
the prepared-statement equivalent of
Connection::execute_query.
§Errors
- Returns
Error::Otherif the underlyingConnectionis on gRPC transport (prepared statements are TCP-only). - Returns
Error::Clientif the server rejectsBindorExecute(type mismatch, runtime error while streaming). - Returns
Error::Ioon transport-level I/O failures.
Sourcepub fn execute(&self, params: &[&dyn ToSqlParam]) -> Result<u64>
pub fn execute(&self, params: &[&dyn ToSqlParam]) -> Result<u64>
Executes the statement as a command (INSERT / UPDATE / DELETE / DDL) and returns the affected-row count.
§Errors
- Returns
Error::Otheron gRPC transport. - Returns
Error::Clientif the server rejectsBindorExecute. - Returns
Error::Ioon transport-level I/O failures.
Sourcepub fn fetch_one(&self, params: &[&dyn ToSqlParam]) -> Result<Row>
pub fn fetch_one(&self, params: &[&dyn ToSqlParam]) -> Result<Row>
Fetches exactly one row; errors if the result is empty.
§Errors
- Returns the error from
query. - Returns
Error::Otherwith message"Query returned no rows"if the result is empty.
Sourcepub fn fetch_optional(&self, params: &[&dyn ToSqlParam]) -> Result<Option<Row>>
pub fn fetch_optional(&self, params: &[&dyn ToSqlParam]) -> Result<Option<Row>>
Sourcepub fn fetch_scalar<T: RowValue>(&self, params: &[&dyn ToSqlParam]) -> Result<T>
pub fn fetch_scalar<T: RowValue>(&self, params: &[&dyn ToSqlParam]) -> Result<T>
Fetches a single non-NULL scalar; errors on empty / NULL.
§Errors
- Returns the error from
query. - Returns
Error::Otherwith message"Query returned no rows"if the result is empty. - Returns
Error::Otherwith message"Scalar query returned NULL"if the first cell is SQLNULL.
Sourcepub fn fetch_optional_scalar<T: RowValue>(
&self,
params: &[&dyn ToSqlParam],
) -> Result<Option<T>>
pub fn fetch_optional_scalar<T: RowValue>( &self, params: &[&dyn ToSqlParam], ) -> Result<Option<T>>
Fetches a single scalar, allowing NULL as None.
§Errors
Returns the error from query. An empty result
still errors (see fetch_scalar); SQL NULL
yields Ok(None).
Trait Implementations§
Auto Trait Implementations§
impl<'conn> Freeze for PreparedStatement<'conn>
impl<'conn> !RefUnwindSafe for PreparedStatement<'conn>
impl<'conn> Send for PreparedStatement<'conn>
impl<'conn> Sync for PreparedStatement<'conn>
impl<'conn> Unpin for PreparedStatement<'conn>
impl<'conn> UnsafeUnpin for PreparedStatement<'conn>
impl<'conn> !UnwindSafe for PreparedStatement<'conn>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request