sqlx_mssql_odbc_core/lib.rs
1//! MSSQL driver for SQLx via ODBC.
2//!
3//! `sqlx-mssql-odbc` connects SQLx to Microsoft SQL Server through an ODBC driver
4//! manager (unixODBC on Linux/macOS, built-in on Windows).
5//!
6//! # Connection
7//!
8//! ```no_run
9//! use sqlx_core::connection::Connection;
10//! use sqlx_core::row::Row;
11//! use sqlx_mssql_odbc_core::MssqlConnection;
12//!
13//! # async fn run() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
14//! let mut conn = MssqlConnection::connect("mssql://sa:Password1!@localhost:1433/testdb").await?;
15//!
16//! let row = sqlx_core::query::query("SELECT 1")
17//! .fetch_one(&mut conn)
18//! .await?;
19//!
20//! let value: i32 = row.try_get(0)?;
21//! assert_eq!(value, 1);
22//!
23//! conn.close().await?;
24//! # Ok(())
25//! # }
26//! ```
27//!
28//! `MssqlConnection::connect()` accepts a standard `mssql://` URL or a raw ODBC
29//! connection string.
30//!
31//! # Requirements
32//!
33//! On Linux and macOS, install the unixODBC driver manager and the Microsoft
34//! ODBC Driver 17 or 18 for SQL Server. On Windows, the driver manager is built
35//! in, but the Microsoft ODBC Driver for SQL Server still needs to be installed.
36//!
37//! Enable the `vendored-unix-odbc` feature to statically link the unixODBC
38//! driver manager into your application on Linux or macOS.
39//!
40//! Buffered fetching can improve throughput, but long text or binary values may
41//! be truncated when `max_column_size` is set. Use unbuffered mode for values
42//! that may exceed that limit.
43
44#![deny(missing_docs)]
45#![deny(rustdoc::broken_intra_doc_links)]
46#![warn(future_incompatible, rust_2018_idioms)]
47#![cfg_attr(docsrs, feature(doc_cfg))]
48
49mod arguments;
50mod column;
51mod connection;
52mod database;
53mod error;
54mod options;
55mod query_result;
56mod row;
57mod statement;
58mod transaction;
59/// Type-checking support for compile-time query macros.
60pub mod type_checking;
61mod type_info;
62mod types;
63mod value;
64
65#[cfg(feature = "any")]
66#[cfg_attr(docsrs, doc(cfg(feature = "any")))]
67#[doc(hidden)]
68pub mod any;
69
70#[cfg(feature = "offline")]
71mod describe;
72
73#[cfg(feature = "offline")]
74#[cfg_attr(docsrs, doc(cfg(feature = "offline")))]
75pub use describe::{describe_blocking, MSSQL_DRIVER};
76
77#[cfg(feature = "migrate")]
78#[cfg_attr(docsrs, doc(cfg(feature = "migrate")))]
79mod migrate;
80
81pub use arguments::{MssqlArgumentValue, MssqlArguments, MssqlParameterCollection};
82pub use column::MssqlColumn;
83pub use connection::MssqlConnection;
84pub use database::Mssql;
85pub use error::{MssqlDatabaseError, MssqlError, Result};
86pub use options::{MssqlBufferSettings, MssqlConnectOptions};
87pub use query_result::MssqlQueryResult;
88pub use row::MssqlRow;
89pub use statement::MssqlStatement;
90pub use transaction::MssqlTransactionManager;
91pub use type_info::{DataTypeExt, MssqlTypeInfo};
92pub use value::{MssqlValue, MssqlValueKind};
93
94/// An alias for [`Pool`][sqlx_core::pool::Pool], specialized for MSSQL.
95pub type MssqlPool = sqlx_core::pool::Pool<Mssql>;
96
97/// An alias for [`PoolOptions`][sqlx_core::pool::PoolOptions], specialized for MSSQL.
98pub type MssqlPoolOptions = sqlx_core::pool::PoolOptions<Mssql>;
99
100/// An alias for [`Transaction`][sqlx_core::transaction::Transaction], specialized for MSSQL.
101pub type MssqlTransaction<'c> = sqlx_core::transaction::Transaction<'c, Mssql>;
102
103/// An alias for [`Executor<'_, Database = Mssql>`][sqlx_core::executor::Executor].
104pub trait MssqlExecutor<'c>: sqlx_core::executor::Executor<'c, Database = Mssql> {}
105impl<'c, T> MssqlExecutor<'c> for T where T: sqlx_core::executor::Executor<'c, Database = Mssql> {}
106
107sqlx_core::impl_acquire!(Mssql, MssqlConnection);