[−][src]Crate sql_builder
Simple SQL code generator.
Usage
To use sql-builder
, first add this to your Cargo.toml
:
[dependencies]
sql-builder = "3.1"
Examples:
SELECT
use sql_builder::SqlBuilder; let sql = SqlBuilder::select_from("company") .field("id") .field("name") .and_where_gt("salary", 25_000) .sql()?; assert_eq!("SELECT id, name FROM company WHERE salary > 25000;", &sql);
use sql_builder::prelude::*; let sql = SqlBuilder::select_from("company") .fields(&["id", "name"]) .and_where("salary BETWEEN ? AND ?".binds(&[&10_000, &25_000])) .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);
INSERT
use sql_builder::{SqlBuilder, quote}; let sql = SqlBuilder::insert_into("company") .field("name") .field("salary") .field("staff") .values(&["e("D&G"), &10_000.to_string(), &100.to_string()]) .values(&["e("G&D"), &25_000.to_string(), &200.to_string()]) .sql()?; assert_eq!("INSERT INTO company (name, salary, staff) VALUES ('D&G', 10000, 100), ('G&D', 25000, 200);", &sql);
use sql_builder::prelude::*; let sql = SqlBuilder::insert_into("company") .field("name") .field("salary") .field("staff") .values(&["$1, ?, ?"]) .values(&["$2, ?, ?"]) .sql()? .bind_nums(&[&"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);
UPDATE
use sql_builder::SqlBuilder; let sql = SqlBuilder::update_table("company") .set("salary", "salary + 100") .and_where_lt("salary", 1_000) .sql()?; assert_eq!("UPDATE company SET salary = salary + 100 WHERE salary < 1000;", &sql);
use sql_builder::prelude::*; let sql = SqlBuilder::update_table("company") .set("salary", "salary + $1") .set("comment", "e("up $1$$")) .and_where("salary < ?".bind(&1_000)) .sql()? .bind_nums(&[&100]); assert_eq!("UPDATE company SET salary = salary + 100, comment = 'up 100$' WHERE salary < 1000;", &sql);
DELETE
use sql_builder::SqlBuilder; let sql = SqlBuilder::delete_from("company") .or_where_lt("salary", 1_000) .or_where_gt("salary", 25_000) .sql()?; assert_eq!("DELETE FROM company WHERE salary < 1000 OR salary > 25000;", &sql);
use sql_builder::prelude::*; use std::collections::HashMap; let mut names: HashMap<&str, &dyn SqlArg> = HashMap::new(); names.insert("min", &1_000); names.insert("max", &25_000); let sql = SqlBuilder::delete_from("company") .and_where("salary >= :min:") .and_where("salary <= :max:") .sql()? .bind_names(&names); assert_eq!("DELETE FROM company WHERE (salary >= 1000) AND (salary <= 25000);", &sql);
See more examples
Re-exports
pub use crate::error::SqlBuilderError; |
pub use crate::name::SqlName; |
Modules
arg | |
bind | |
error | |
name | |
prelude |
Macros
baname | Make backquoted name of identifier. |
brname | Make brackets quoted name of identifier. |
dname | Make double quoted name of identifier. |
name | Make safe name of identifier if it contains unsafe characters. |
qname | Make quoted name of identifier. |
Structs
SqlBuilder | Main SQL builder |
Functions
baquote | Backquote string for SQL. |
brquote | Quote string with [brackets]. |
dquote | Double quote string for SQL. |
esc | Escape string for SQL. |
quote | Quote string for SQL. |