生のSQL文を発行する。
成果物
sqlite3クレート
標準ライブラリには無いと思われる。
SQL文を直接書いて実行するヤツっぽい。
コーディング
クレート新規作成
$ cargo new sqlite3_mini --bin
sqlite3クレート依存設定
Cargo.toml
[dependencies] sqlite3 = "0.24.0"
sqlite3クレートのダウンロードと実行。
$ cargo test
Updating crates.io index Downloaded sqlite3 v0.24.0 Downloaded libc v0.2.60 Downloaded sqlite3-sys v0.12.0 Downloaded sqlite3-src v0.2.11 Downloaded cc v1.0.38 Compiling pkg-config v0.3.14 Compiling cc v1.0.38 Compiling libc v0.2.60 Compiling sqlite3-src v0.2.11 Compiling sqlite3-sys v0.12.0 Compiling sqlite3 v0.24.0 Compiling sqlite3_mini v0.1.0 (/tmp/work/sqlite3_mini) Finished dev [unoptimized + debuginfo] target(s) in 3m 06s
約3分かかった。
コード
サンプルコードをほぼ丸パクリ。
fn main() { // let connection = sqlite::open(":memory:").unwrap(); // let connection = sqlite3::sqlite::open(":memory:").unwrap(); let connection = sqlite3::open(":memory:").unwrap(); connection .execute( " CREATE TABLE users (name TEXT, age INTEGER); INSERT INTO users (name, age) VALUES ('Alice', 42); INSERT INTO users (name, age) VALUES ('Bob', 69); ", ) .unwrap(); connection .iterate("SELECT * FROM users WHERE age > 50", |pairs| { for &(column, value) in pairs.iter() { println!("{} = {}", column, value.unwrap()); } true }) .unwrap(); }
実行結果。
name = Bob age = 69
ただし、sqlite::
ではエラーになった。sqlite3::
にすると解決した。
error[E0433]: failed to resolve: use of undeclared type or module `sqlite` --> src/lib.rs:3:22 | 3 | let connection = sqlite::open(":memory:").unwrap(); | ^^^^^^ use of undeclared type or module `sqlite`
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- rustc 1.36.0 (a53f9df32 2019-07-03)
- cargo 1.36.0 (c4fcfb725 2019-05-15)
$ uname -a Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
前回まで
- Rust学習まとめ(ドキュメント)
- Rust自習(じゃんけんゲーム1)
- Rust自習(双方向リスト1)
- Rust自習(単方向リスト1)
- Rust自習(単方向リスト2)
- Rust自習(単方向リスト3)
- Rust自習(単方向リスト4)
- Rust自習(単方向リスト5)
- Rust自習(単方向リスト6)
- Rust自習(単方向リスト7)
- Rust自習(リストのインタフェースを考える)
- Rust自習(連結リスト1)
- Rust自習(連結リスト2)
- Rust自習(連結リスト3)
- Rust自習(連結リスト4)
- Rust自習(連結リストの取得系インタフェース考察)
- Rust自習(連結リスト5)
- Rust自習(連結リストの取得系インタフェース考察2)
- Rust自習(連結リスト6)
- Rust自習(連結リスト7)
- Rust自習(連結リスト8)
- Rust自習(連結リスト9)
- Rust自習(変数名でイテレートする方法)
- Rust自習(iter、iter_mut実装方法)
- Rust自習(連結リスト10)
- Rust自習(rev()実装できず)
- Rust自習(cycle()実装できず)
- Rust自習(じゃんけんゲーム2)
- Rust自習(じゃんけんゲーム3)
- Rust自習(じゃんけんゲーム4)
- Rust自習(じゃんけんゲーム5)
- Rust自習(じゃんけんゲーム6)
- Rust自習(じゃんけんゲーム7)
- Rust自習(じゃんけんゲーム8)
- Rustのアップデート(rustup update)