4
* Copyright (C) 2009 Tim Marston <tim@ed.am>
6
* This file is part of sqlite3cc (hereafter referred to as "this program").
7
* See http://ed.am/dev/sqlite3cc for more information.
9
* This program is free software: you can redistribute it and/or modify it under
10
* the terms of the GNU Lesser General Public License as published by the Free
11
* Software Foundation, either version 3 of the License, or (at your option) any
14
* This program is distributed in the hope that it will be useful, but WITHOUT
15
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
4
* Copyright (C) 2009 Tim Marston <edam@waxworlds.org>
6
* This file is part of sqlitepp (hereafter referred to as "this program").
7
* See http://www.waxworlds.org/edam/software/sqlitepp for more information.
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU Lesser General Public License as published
11
* by the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU Lesser General Public License for more details.
19
19
* You should have received a copy of the GNU Lesser General Public License
20
20
* along with this program. If not, see <http://www.gnu.org/licenses/>.
23
#ifndef SQLITE3CC_COMMAND_H_
24
#define SQLITE3CC_COMMAND_H_
27
#include <sqlite3cc/basic_statement.h>
27
#include "statement.hpp"
36
* The command class represents an SQL command. Since there is very little
35
* The command class represents an SQL command. Since there is very little
37
36
* difference between a command an a statement, it is basically a shim around
38
37
* the statement class with the addition of an exec() method to execute the
43
public detail::basic_statement
45
44
//______________________________________________________________________________
50
* Constructor that provides a connection upon which to act and the SQL
53
* @param connection a reference to a connection
49
* Constructor that provides the SQL statement to execute
54
50
* @param sql an SQL statement in UTF-8
57
connection &connection,
58
const std::string &sql );
61
* Constructor that provides a connection upon which to act.
63
* @param connection a reference to a connection
66
connection &connection );
54
const std::string &sql )
56
statement( database, sql )
68
59
//______________________________________________________________________________
69
60
// public interface
73
* Prepare an SQL statement.
75
* @param sql an SQL statement in UTF-8
76
* @returns an sqlite error code
77
* @see sqlite3_prepare_v2()
80
const std::string &sql );
83
* Step through one execution cycle of the SQL statement. If this is an SQL
84
* statement that doesn't return any rows, only one cycle is required,
85
* otherwise, each cycle will return another row
87
* @return an sqlite error code
93
* Execute the command. This is the same as doing a step().
95
* @return an sqlite error code
64
* Execute the command. This is the same as doing a step().
96
65
* @see sqlite3_step()
104
* Get the number of changes made by the last successful execution of this
105
* command. This doesn't include changes made in trigger subcontexts.
107
* @return the number of changed rows
108
* @see sqlite3_changes()
116
* Get the number of changes made by the last successful execution of this
117
* command. This includes changes made in all trigger subcontexts.
119
* @return the number of changed rows
120
* @see sqlite3_total_changes()
122
inline int total_changes()
124
return _total_changes;
128
* Get the rowid of the last row inserted via a successful INSERT command
129
* (regardless of whether that is this command or not).
131
* @return the last inserted rowid
133
inline long long last_insert_rowid()
135
return _last_insert_rowid;
138
//______________________________________________________________________________
142
/** non-recursive number of changes made by the last execution */
145
/** recursive number of changes made by the last execution */
148
/** the rowid of the last successful insert command */
149
long long _last_insert_rowid;
158
// template specialisations for detail::basic_statement::operator <<()
160
basic_statement &basic_statement::operator << < detail::exec_t >(
161
const detail::exec_t & );
164
} // namespace detail
167
} // namespace sqlite
170
#endif /* SQLITE3CC_COMMAND_H_ */
78
#endif /* COMMAND_HPP_ */