Crate rsfbclient[][src]

Rust Firebird Client

How to use it

1. Start by choosing the lib variation you want

// To use the offcial ('native') Firebird client .dll/.so/.dylib
// (needs to find dll at build time)
rsfbclient::builder_native().with_dyn_link()
// Or using dynamic loading
rsfbclient::builder_native().with_dyn_load("/my/firebird/here/lib/libfbclient.so")
// Or using the pure rust implementation
rsfbclient::builder_pure_rust()

2. Set your connection params

// For a remote server, using a dynamically linked native client
let mut conn = rsfbclient::builder_native()
    .with_dyn_link()
    .with_remote()
    .host("my.host.com.br")
    .db_name("awesome.fdb")
    .connect()?
// Or if you need a embedded/local only access
let mut conn = rsfbclient::builder_native()
    .with_dyn_link()
    .with_embedded()
    .db_name("/path/to/awesome.fdb")
    .connect()?

You also can choose a string connection configuration

// Using the native Firebird client
rsfbclient::builder_native()
    .from_string("firebird://SYSDBA:masterkey@my.host.com.br:3050/awesome.fdb?charset=ascii")
// Or using the pure rust implementation
rsfbclient::builder_pure_rust()
    .from_string("firebird://SYSDBA:masterkey@my.host.com.br:3050/awesome.fdb?charset=ascii")

3. Now you can use the lib

let rows = conn.query_iter("select col_a, col_b, col_c from test", ())?;
...

Simple Connection/Transaction

Sometimes you will need store the Connection and Transaction types into a struct field without care about Firebird Client variation. To do this, you can use the SimpleConnection and SimpleTransaction types.

To use, you only need use the From trait, calling the into() method. Example:

let mut conn: SimpleConnection = rsfbclient::builder_native()
    .with_dyn_link()
    .with_remote()
    .host("my.host.com.br")
    .db_name("awesome.fdb")
    .connect()?
    .into();

Cargo features

All features can be used at the same time if needed.

linking

Will use the dynamic library of the official fbclient at runtime and compiletime. Used in systems where there is already a firebird client installed and configured.

dynamic_loading

Can find the official fbclient native library by path at runtime, does not need the library at compiletime. Useful when you need to build in a system without a firebird client installed.

pure_rust

Uses a pure rust implementation of the firebird wire protocol, does not need the native library at all. Useful for cross-compilation and allow a single binary to be deployed without needing to install the firebird client.

Modules

builders
prelude

Structs

Column
Connection

A connection to a firebird database

ConnectionConfiguration

Generic aggregate of configuration data for firebird db Connections The data required for forming connections is partly client-implementation-dependent

NativeConnectionBuilder

A builder for a client using the official (‘native’) Firebird dll.

PureRustConnectionBuilder

A builder for a firebird client implemented in pure rust. Does not currently support embedded connections.

Row

A database row

SimpleConnection

A connection API without client types

SimpleTransaction

A transaction API without client types

Statement
Transaction

Enums

Dialect

Firebird sql dialect

EngineVersion
FbError
ParamsType

Parameters type

SqlType

Sql parameter / column data

Traits

ColumnToVal

Define the conversion from the buffer to a value

Execute

Implemented for types that can be used to execute sql statements

FirebirdClientFactory

A generic factory for creating multiple preconfigured instances of a particular client implementation Intended mainly for use by connection pool

FromRow

Implemented for types that represents a list of values of columns

IntoParam

Implemented for types that can be sent as parameters

IntoParams

Types with an associated boolean flag function, named() indiciating support for named or positional parameters.

Queryable

Implemented for types that can be used to execute sql queries

SystemInfos

Infos about the server, database, engine…

Functions

builder_native

Get a new instance of NativeConnectionBuilder

builder_pure_rust

Get a new instance of PureRustConnectionBuilder