File: stat.txt

package info (click to toggle)
cppdb 0.3.1%2Bdfsg-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 676 kB
  • sloc: cpp: 7,373; sh: 133; ansic: 72; makefile: 6
file content (89 lines) | stat: -rw-r--r-- 3,179 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*! \page stat Preparing and Executing Statements

\section stat_prep Creating a Statement

The cppdb::statement objects are usually created by calling cppdb::session::prepare() function or by using
cppdb::session::operator<<(). Prepare statements are usually cached for future reuse. Non-prepared statements
can be also created by calling cppdb::session::create_statement() and prepared statements can be created without
caching by calling cppdb::session::create_prepared_uncached_statement(). It is useful when
such statements are rarely executed or executed only once.

For example:

\code
cppdb::statement st=sql.prepare("DELETE FROM users");
\endcode

\section stat_bind Binding Parameters

The statement may contain placeholders marked with "?" for parameters that should be binded. The
values for placeholders can be binded by their order using cppdb::statement::operator<<()  or \ref cppdb::statement "bind()"
functions. The placeholder order can be also specified explicitly starting from 1.

For example:
\code
cppdb::statement st=sql.prepare("DELETE FROM users WHERE age<? AND role<>?");
st.bind(1,13);
st.bind(2,"moderator");
\endcode

Of course syntactic sugar may be used as well:
\code
cppdb::statement st=sql << "DELETE FROM users WHERE age<? AND role<>?" << 13 << "moderator";
\endcode


\section stat_null Binding NULL values.

- You can use cppdb::statement::bind_null() functions.
\n
\code
cppdb::statement st=sql << "INSERT into f(x) values(?)";
st.bind_null(1);
\endcode
- You can use manipulator cppdb::null
\n
\code
sql << "INSERT into f(x) values(?)" << cppdb::null << cppdb::exec;
\endcode
- If you have an information about wether the value is null or not only at run time you can use a cppdb::use() manipulator
which receives a value and a parameter of cppdb::null_tag_type.
\n
\code
cppdb::null_tag_type tag = value_is_null ? cppdb::null_value : cppdb::not_null_value;
sql << "INSERT into f(x) values(?)" << cppdb::use(value,tag) << cppdb::exec;
\endcode


\section stat_exec Executing Statements

Statements are executed by calling cppdb::statement::exec(). Also manipulator cppdb::exec provided
for execution of a statement that allows writing complex queries in one line.
\code
sql << "DELETE FROM users WHERE age<? AND role<>?" << 13 << "moderator" <<cppdb::exec;
\endcode

\section stat_meta Fetching Meta-data

Meta-data about recently executed statement can fetched using following functions:

- cppdb::statement::affected() - the number of rows affected by the statement
- cppdb::statement::last_insert_id() - the last generated row id.
- cppdb::statement::sequence_last() - the last generated sequence number (using named sequences).

\section stat_reset Reusing Statement

The same prepared statement can be reused multiple times. For this purpose after each call of ppdb::statement::exec() or ppdb::statement::query(), ppdb::statement::reset() should be called that would clear all bindings and allow executing it once again:

\code
cppdb::statement st = sql << "INSERT INTO students(id,name) values(?,?)";
for(i=0;i<students.size();i++) {
  st.bind(students[i].id);
  st.bind(students[i].name);
  st.exec();
  st.reset();
}
\endcode

*/