Connessione a SQLite in Rust

Mattepuffo's logo
Connessione a SQLite in Rust

Connessione a SQLite in Rust

Anche con Rust è possibile usare il db SQLite, ed è anche abbastanza facile.

Prima di tutto aggiungete questa dipendenza al Cargo.toml:

[dependencies.rusqlite]
version = "0.21.0"
features = ["bundled"]

Qui sotto un codice di esempio che:

  • crea il db
  • creata una tabella se non esiste
  • inserisce dei records
  • legge tutti i records

Attenzione che abbiamo messo il titolo come obbligatorio, e quindi al secondo lancio avrete un errore.

O cancellate il db, o cambiate i titoli:

use rusqlite::{Connection, Result};
use rusqlite::NO_PARAMS;

#[derive(Debug)]
struct Libro {
    titolo: String
}

fn main() -> Result<()> {
    let conn = Connection::open("/home/matte-server/Scrivania/test.db")?;

    conn.execute(
        "CREATE TABLE IF NOT EXISTS libri (
             id integer primary key,
             titolo text not null unique
         )",
        NO_PARAMS,
    )?;

    let mut libri = Vec::new();
    libri.push("Shining");
    libri.push("Vento nero");
    for l in libri {
        conn.execute(
            "INSERT INTO libri (titolo) values (?1)",
            &[&l],
        )?;
        let last_id: String = conn.last_insert_rowid().to_string();
        println!("Last {}", last_id);
    }

    let mut stmt = conn.prepare(
        "SELECT * From libri"
    )?;

    let lista_libri = stmt.query_map(NO_PARAMS, |row| {
        Ok(Libro {
            titolo: row.get(1)?,
        })
    })?;

    for l in lista_libri {
        println!("Titolo {:?}", l);
    }

    Ok(())
}

Enjoy!


Share this Post

Commentami!