Simple SQL code generator.
To use sql-builder
, add this to your Cargo.toml
:
toml
[dependencies]
sql-builder = "3.1"
```rust use sql_builder::SqlBuilder;
let sql = SqlBuilder::selectfrom("company") .field("id") .field("name") .andwheregt("salary", 25000) .sql()?;
assert_eq!("SELECT id, name FROM company WHERE salary > 25000;", &sql); ```
```rust use sql_builder::prelude::*;
let sql = SqlBuilder::selectfrom("company") .fields(&["id", "name"]) .andwhere("salary BETWEEN ? AND ?".binds(&[&10000, &25000])) .and_where("staff BETWEEN ? AND ?".bind(&100).bind(&200)) .sql()?;
assert_eq!("SELECT id, name FROM company WHERE (salary BETWEEN 10000 AND 25000) AND (staff BETWEEN 100 AND 200);", &sql); ```
```rust use sql_builder::{SqlBuilder, quote};
let sql = SqlBuilder::insertinto("company") .field("name") .field("salary") .field("staff") .values(&["e("D&G"), &10000.tostring(), &100.tostring()]) .values(&["e("G&D"), &25000.tostring(), &200.to_string()]) .sql()?;
assert_eq!("INSERT INTO company (name, salary, staff) VALUES ('D&G', 10000, 100), ('G&D', 25000, 200);", &sql); ```
```rust use sql_builder::prelude::*;
let sql = SqlBuilder::insertinto("company") .field("name") .field("salary") .field("staff") .values(&["$1, ?, ?"]) .values(&["$2, ?, ?"]) .sql()? .bindnums(&[&"D&G", &"G&D"]) .binds(&[&10_000, &100]);
assert_eq!("INSERT INTO company (name, salary, staff) VALUES ('D&G', 10000, 100), ('G&D', 10000, 100);", &sql); ```
```rust use sql_builder::SqlBuilder;
let sql = SqlBuilder::updatetable("company") .set("salary", "salary + 100") .andwherelt("salary", 1000) .sql()?;
assert_eq!("UPDATE company SET salary = salary + 100 WHERE salary < 1000;", &sql); ```
```rust use sql_builder::prelude::*;
let sql = SqlBuilder::updatetable("company") .set("salary", "salary + $1") .set("comment", "e("up $1$$")) .andwhere("salary < ?".bind(&1000)) .sql()? .bindnums(&[&100]);
assert_eq!("UPDATE company SET salary = salary + 100, comment = 'up 100$' WHERE salary < 1000;", &sql); ```
```rust use sql_builder::SqlBuilder;
let sql = SqlBuilder::deletefrom("company") .orwherelt("salary", 1000) .orwheregt("salary", 25_000) .sql()?;
assert_eq!("DELETE FROM company WHERE salary < 1000 OR salary > 25000;", &sql); ```
```rust use sql_builder::prelude::*; use std::collections::HashMap;
let mut names: HashMap<&str, &dyn SqlArg> = HashMap::new(); names.insert("min", &1000); names.insert("max", &25000);
let sql = SqlBuilder::deletefrom("company") .andwhere("salary >= :min:") .andwhere("salary <= :max:") .sql()? .bindnames(&names);
assert_eq!("DELETE FROM company WHERE (salary >= 1000) AND (salary <= 25000);", &sql); ```
See more examples
This project is licensed under the MIT license.