mimerrust

Crates.iomimerrust
lib.rsmimerrust
version
sourcesrc
created_at2024-12-09 12:32:57.730176
updated_at2024-12-11 11:53:03.613556
descriptionA Rust library for interacting with Mimer SQL, a high-performance relational database management system (RDBMS)
homepagehttps://www.mimer.com
repositoryhttps://github.com/mimersql/mimerrust
max_upload_size
id1477337
Cargo.toml error:TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
(mimersql-dev)

documentation

README

Mimer SQL Rust API

The mimerrust crate implements an API for interacting with Mimer SQL databases from Rust.

The Mimer SQL Rust API is built as a wrapper around the Mimer C API. It consists of two crates:

  1. mimerrust: Implements the Mimer SQL Rust API. It uses the wrappers from mimerrust-sys to create a high level, safe interface.

  2. mimerrust-sys: Handles low-level wrapping of the C library into Rust-compatible concepts. It is not intended for direct use, but rather as an intermediary wrapping step. To reduce build time and avoid requiring LLVM and Clang on Windows, a pre-generated binding is used by default. To generate and use a new binding, pass the --features run_bindgen flag when building.

Example usage:

use mimerrust::{Connection, ToSql, CursorMode};

fn main() {
    print!("Connecting to database\n");
    let mut conn =
        Connection::open("", "RUSTUSER", "RUSTPASSWORD").unwrap_or_else(|ec| panic!("{}", ec));

    conn.execute_statement("DROP TABLE test_table").ok();
    println!("Creating table");
    conn.execute_statement("CREATE TABLE test_table (id INT primary key, text NVARCHAR(30))")
        .expect("Error creating table");
    println!("Inserting rows");
    let insert_stmt = conn.prepare("INSERT INTO test_table (id, text) VALUES(:id, :text)", 
        CursorMode::Forward).expect("Error preparing statement");

    let mut text = "Hello";
    let mut id = 1;
    let params: &[&dyn ToSql] = &[&id,&text];
    insert_stmt.execute_bind(params).expect("Error inserting first row"); 

    text = "World!";
    id = 2;
    let params: &[&dyn ToSql] = &[&id,&text];
    insert_stmt.execute_bind(params).expect("Error inserting second row");  

    let stmt = conn
        .prepare("SELECT * from test_table", CursorMode::Forward)
        .unwrap();
    let mut cursor = stmt.open_cursor().unwrap();
    println!("Fetching all rows");
    while let Some(row) = cursor.next_row().unwrap() {
        let id: i32 = row.get(1).unwrap().unwrap();
        let text: String = row.get(2).unwrap().unwrap();
        println!("id: {}, text: {}", id, text);
    }
}

Resources

Credits

The following persons have contributed to the initial version of Mimer SQL Rust API:

Commit count: 15

cargo fmt