Mssqlex v2.0.0-beta.0 Mssqlex View Source
Interface for interacting with MS SQL Server via an ODBC driver for Elixir.
It implements DBConnection
behaviour, using :odbc
to connect to the
system's ODBC driver. Requires MS SQL Server ODBC driver, see
README for installation instructions.
Link to this section Summary
Types
A connection process name, pid or reference.
A connection reference is used when making multiple requests to the same
connection, see transaction/3
.
Functions
Executes a query against an MS SQL Server with ODBC.
Executes a query against an MS SQL Server with ODBC.
Connect to a MS SQL Server using ODBC.
Link to this section Types
A connection process name, pid or reference.
A connection reference is used when making multiple requests to the same
connection, see transaction/3
.
Link to this section Functions
child_spec(opts)
View Sourcechild_spec(options :: Keyword.t()) :: Supervisor.Spec.spec()
query(conn, statement, params \\ [], opts \\ [])
View Sourcequery(conn(), iodata(), params(), Keyword.t()) :: {:ok, Mssqlex.Result.t()} | {:error, Exception.t()}
Executes a query against an MS SQL Server with ODBC.
conn
expects a Mssqlex
process identifier.
statement
expects a SQL query string.
params
expects a list of values in one of the following formats:
- Strings with only valid ASCII characters, which will be sent to the database as strings.
- Other binaries, which will be converted to UTF16 Little Endian binaries (which is what SQL Server expects for its unicode fields).
Decimal
structs, which will be encoded as strings so they can be sent to the database with arbitrary precision.- Integers, which will be sent as-is if under 10 digits or encoded as strings for larger numbers.
- Floats, which will be encoded as strings.
- Time as
{hour, minute, sec, usec}
tuples, which will be encoded as strings. - Dates as
{year, month, day}
tuples, which will be encoded as strings. - Datetime as
{{hour, minute, sec, usec}, {year, month, day}}
tuples which will be encoded as strings. Note that attempting to insert a value with usec > 0 into a 'datetime' or 'smalldatetime' column is an error since those column types don't have enough precision to store usec data.
opts
expects a keyword list with zero or more of:
:preserve_encoding
: Iftrue
, doesn't convert returned binaries from UTF16LE to UTF8. Default:false
.:mode
- set to:savepoint
to use a savepoint to rollback to before the query on error, otherwise set to:transaction
(default::transaction
);
Result values will be encoded according to the following conversions:
- char and varchar: strings.
- nchar and nvarchar: strings unless
:preserve_encoding
is set totrue
in which case they will be returned as UTF16 Little Endian binaries. - int, smallint, tinyint and bigint: integers.
- float, real, double precision, decimal and numeric:
Decimal
structs. - date:
{year, month, day}
- smalldatetime, datetime, dateime2:
{{YY, MM, DD}, {HH, MM, SS, 0}}
(note that fractional second data is lost due to limitations of the ODBC adapter. To preserve it you can convert these columns to varchar during selection.) - uniqueidentifier: string
- time, binary, varbinary, rowversion: not currently supported due to adapter limitations. Select statements for columns of these types must convert them to supported types (e.g. varchar).
query!(conn, statement, params, opts \\ [])
View Sourcequery!(pid(), binary(), [Mssqlex.Type.param()], Keyword.t()) :: Mssqlex.Result.t()
Executes a query against an MS SQL Server with ODBC.
Raises an error on failure. See query/4
for details.
start_link(opts)
View Sourcestart_link(Keyword.t()) :: {:ok, pid()} | {:error, Mssqlex.Error.t() | term()}
Connect to a MS SQL Server using ODBC.
opts
expects a keyword list with zero or more of:
:odbc_driver
- The driver the adapter will use.- environment variable:
MSSQL_DVR
- default value: {ODBC Driver 17 for SQL Server}
- environment variable:
:hostname
- The server hostname.- environment variable:
MSSQL_HST
- default value: localhost
- environment variable:
:instance_name
- OPTIONAL. The name of the instance, if using named instances.- environment variable:
MSSQL_IN
- environment variable:
:port
- OPTIONAL. The server port number.- environment variable:
MSSQL_PRT
- environment variable:
:database
- The name of the database.- environment variable:
MSSQL_DB
- environment variable:
:username
- Username.- environment variable:
MSSQL_UID
- environment variable:
:password
- User's password.- environment variable:
MSSQL_PWD
- environment variable:
:encrypt
- Specifies whether data should be encrypted before sending it over the network.- environment variable:
MSSQL_ENCRYPT
- environment variable:
:trust_server_certificate
- When used with Encrypt, enables encryption using a self-signed server certificate.- environment variable:
MSSQL_TRUST_SERVER_CERT
- environment variable:
Mssqlex
uses the DBConnection
framework and supports all DBConnection
options like :idle
, :after_connect
etc.
See DBConnection.start_link/2
for more information.
Examples
iex> {:ok, pid} = Mssqlex.start_link(database: "mr_microsoft")
{:ok, #PID<0.70.0>}