squire_sqlite3_sys/bindings/default/
statement.rs

1use core::ffi::{c_char, c_int, c_uint};
2
3use super::{connection::sqlite3, types::sqlite3_int64};
4
5/// A [prepared statement][].
6///
7/// [prepared statement]: https://sqlite.org/c3ref/stmt.html
8#[repr(C)]
9pub struct sqlite3_stmt {
10    _unused: [u8; 0],
11}
12
13unsafe extern "C" {
14    /// [Prepare][prepare] a SQL [statement][].
15    ///
16    /// [prepare]: https://sqlite.org/c3ref/prepare.html
17    /// [statement]: https://sqlite.org/c3ref/stmt.html
18    pub fn sqlite3_prepare_v3(
19        db: *mut sqlite3,
20        zSql: *const c_char,
21        nByte: c_int,
22        prepFlags: c_uint,
23        ppStmt: *mut *mut sqlite3_stmt,
24        pzTail: *mut *const c_char,
25    ) -> c_int;
26
27    pub fn sqlite3_step(pStmt: *mut sqlite3_stmt) -> c_int;
28
29    pub fn sqlite3_bind_parameter_count(pStmt: *mut sqlite3_stmt) -> c_int;
30    pub fn sqlite3_bind_parameter_name(pStmt: *mut sqlite3_stmt, arg2: c_int) -> *const c_char;
31    pub fn sqlite3_bind_parameter_index(pStmt: *mut sqlite3_stmt, zName: *const c_char) -> c_int;
32
33    pub fn sqlite3_column_count(pStmt: *mut sqlite3_stmt) -> c_int;
34    pub fn sqlite3_column_name(pStmt: *mut sqlite3_stmt, n: c_int) -> *const c_char;
35    pub fn sqlite3_column_database_name(pStmt: *mut sqlite3_stmt, n: c_int) -> *const c_char;
36    pub fn sqlite3_column_table_name(pStmt: *mut sqlite3_stmt, n: c_int) -> *const c_char;
37    pub fn sqlite3_column_origin_name(pStmt: *mut sqlite3_stmt, n: c_int) -> *const c_char;
38    pub fn sqlite3_column_decltype(pStmt: *mut sqlite3_stmt, n: c_int) -> *const c_char;
39    pub fn sqlite3_data_count(pStmt: *mut sqlite3_stmt) -> c_int;
40
41    pub fn sqlite3_db_handle(pStmt: *mut sqlite3_stmt) -> *mut sqlite3;
42
43    pub fn sqlite3_changes(pStmt: *mut sqlite3) -> c_int;
44    pub fn sqlite3_changes64(pStmt: *mut sqlite3) -> sqlite3_int64;
45    pub fn sqlite3_last_insert_rowid(pStmt: *mut sqlite3) -> sqlite3_int64;
46    pub fn sqlite3_set_last_insert_rowid(pStmt: *mut sqlite3, id: sqlite3_int64);
47
48    pub fn sqlite3_clear_bindings(pStmt: *mut sqlite3_stmt) -> c_int;
49    pub fn sqlite3_reset(pStmt: *mut sqlite3_stmt) -> c_int;
50    pub fn sqlite3_finalize(pStmt: *mut sqlite3_stmt) -> c_int;
51}
52
53pub const SQLITE_PREPARE_PERSISTENT: i32 = 1;
54pub const SQLITE_PREPARE_NORMALIZE: i32 = 2;
55pub const SQLITE_PREPARE_NO_VTAB: i32 = 4;
56pub const SQLITE_PREPARE_DONT_LOG: i32 = 16;