From 793e47a759691401a13764470bf6539846015e1b Mon Sep 17 00:00:00 2001 From: "Hatter Jiang@Pixelbook" Date: Mon, 10 Feb 2020 22:05:45 +0800 Subject: [PATCH] add rusqlite --- rusqlite/Cargo.lock | 130 +++++++++++++++++++++++++++++++++++++++++++ rusqlite/Cargo.toml | 12 ++++ rusqlite/src/main.rs | 49 ++++++++++++++++ 3 files changed, 191 insertions(+) create mode 100644 rusqlite/Cargo.lock create mode 100644 rusqlite/Cargo.toml create mode 100644 rusqlite/src/main.rs diff --git a/rusqlite/Cargo.lock b/rusqlite/Cargo.lock new file mode 100644 index 0000000..df0691d --- /dev/null +++ b/rusqlite/Cargo.lock @@ -0,0 +1,130 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "libc" +version = "0.2.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" + +[[package]] +name = "libsqlite3-sys" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266eb8c361198e8d1f682bc974e5d9e2ae90049fb1943890904d11dad7d4a77d" +dependencies = [ + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "memchr" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223" + +[[package]] +name = "pkg-config" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" + +[[package]] +name = "redox_syscall" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" + +[[package]] +name = "rusqlite" +version = "0.1.0" +dependencies = [ + "rusqlite 0.21.0", + "time", +] + +[[package]] +name = "rusqlite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a656821bb6317a84b257737b7934f79c0dbb7eb694710475908280ebad3e64" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "libsqlite3-sys", + "lru-cache", + "memchr", + "time", +] + +[[package]] +name = "time" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" +dependencies = [ + "libc", + "redox_syscall", + "winapi", +] + +[[package]] +name = "vcpkg" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" + +[[package]] +name = "winapi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/rusqlite/Cargo.toml b/rusqlite/Cargo.toml new file mode 100644 index 0000000..1157e45 --- /dev/null +++ b/rusqlite/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "rusqlite" +version = "0.1.0" +authors = ["Hatter Jiang@Pixelbook "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +rusqlite = "0.21.0" +time = "0.1.0" + diff --git a/rusqlite/src/main.rs b/rusqlite/src/main.rs new file mode 100644 index 0000000..614d9e7 --- /dev/null +++ b/rusqlite/src/main.rs @@ -0,0 +1,49 @@ +use rusqlite::{params, Connection, Result}; +use time::Timespec; + +#[derive(Debug)] +struct Person { + id: i32, + name: String, + time_created: Timespec, + memo: String, +} + +fn main() -> Result<()> { + let conn = Connection::open_in_memory()?; + + conn.execute( + "CREATE TABLE person ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL, + time_created TEXT NOT NULL, + memo TEXT NOT NULL + )", + params![], + )?; + let me = Person { + id: 0, + name: "Steven".to_owned(), + time_created: time::get_time(), + memo: "memo...".to_owned(), + }; + conn.execute( + "INSERT INTO person (name, time_created, memo) VALUES (?1, ?2, ?3)", + params![me.name, me.time_created, me.memo], + )?; + + let mut stmt = conn.prepare("SELECT id, name, time_created, memo FROM person")?; + let person_iter = stmt.query_map(params![], |row| { + Ok(Person { + id: row.get(0)?, + name: row.get(1)?, + time_created: row.get(2)?, + memo: row.get(3)?, + }) + })?; + + for person in person_iter { + println!("Found person {:?}", person.unwrap()); + } + Ok(()) +} \ No newline at end of file