Trait odbc_api::ResultSetMetadata
source · [−]pub trait ResultSetMetadata {
type Statement: Statement;
fn stmt_ref(&self) -> &Self::Statement;
fn describe_col(
&self,
column_number: u16,
column_description: &mut ColumnDescription
) -> Result<(), Error> { ... }
fn num_result_cols(&self) -> Result<i16, Error> { ... }
fn is_unsigned_column(&self, column_number: u16) -> Result<bool, Error> { ... }
fn col_octet_length(&self, column_number: u16) -> Result<isize, Error> { ... }
fn col_display_size(&self, column_number: u16) -> Result<isize, Error> { ... }
fn col_precision(&self, column_number: u16) -> Result<isize, Error> { ... }
fn col_scale(&self, column_number: u16) -> Result<isize, Error> { ... }
fn col_name(&self, column_number: u16) -> Result<String, Error> { ... }
fn column_names(&self) -> Result<ColumnNamesIt<'_, Self>, Error> { ... }
fn col_data_type(&self, column_number: u16) -> Result<DataType, Error> { ... }
}
Expand description
Provides Metadata of the resulting the result set. Implemented by Cursor
types and prepared
queries. Fetching metadata from a prepared query might be expensive (driver dependent), so your
application should fetch the Metadata it requires from the Cursor
if possible.
See also: https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/result-set-metadata
Associated Types
Statement type of the cursor. This is always an instantiation of
crate::handles::Statement
with a generic parameter indicating the lifetime of the
associated connection.
So this trait could have had a lifetime parameter instead and provided access to the underlying type. However by using the projection of only the cursor methods of the underlying statement, consumers of this trait no only have to worry about the lifetime of the statement itself (e.g. the prepared query) and not about the lifetime of the connection it belongs to.
Required methods
Get a shared reference to the underlying statement handle. This method is used to implement
other more high level methods like Self::describe_col
on top of it. It is usually not
intended to be called by users of this library directly, but may serve as an escape hatch
for low level usecases.
Provided methods
fn describe_col(
&self,
column_number: u16,
column_description: &mut ColumnDescription
) -> Result<(), Error>
fn describe_col(
&self,
column_number: u16,
column_description: &mut ColumnDescription
) -> Result<(), Error>
Fetch a column description using the column index.
Parameters
column_number
: Column index.0
is the bookmark column. The other column indices start with1
.column_description
: Holds the description of the column after the call. This method does not provide strong exception safety as the value of this argument is undefined in case of an error.
fn num_result_cols(&self) -> Result<i16, Error>
fn num_result_cols(&self) -> Result<i16, Error>
Number of columns in result set. Can also be used to see wether execting a prepared
Statement (crate::Prepared
) would yield a result set, as this would return 0
if it
does not.
See also: https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlnumresultcols-function
true
if a given column in a result set is unsigned or not a numeric type, false
otherwise.
column_number
: Index of the column, starting at 1.
Returns the size in bytes of the columns. For variable sized types the maximum size is returned, excluding a terminating zero.
column_number
: Index of the column, starting at 1.
Maximum number of characters required to display data from the column.
column_number
: Index of the column, starting at 1.
Precision of the column.
Denotes the applicable precision. For data types SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP, and all the interval data types that represent a time interval, its value is the applicable precision of the fractional seconds component.
The applicable scale for a numeric data type. For DECIMAL and NUMERIC data types, this is the defined scale. It is undefined for all other data types.
The column alias, if it applies. If the column alias does not apply, the column name is returned. If there is no column name or a column alias, an empty string is returned.
fn column_names(&self) -> Result<ColumnNamesIt<'_, Self>, Error>
fn column_names(&self) -> Result<ColumnNamesIt<'_, Self>, Error>
Use this if you want to iterate over all column names and allocate a String
for each one.
This is a wrapper around col_name
introduced for convenience.