/sqlite3cc

To get this branch, use:
bzr branch http://bzr.ed.am/sqlite3cc

« back to all changes in this revision

Viewing changes to include/sqlite3cc/command.h

  • Committer: edam
  • Date: 2010-07-29 20:56:19 UTC
  • Revision ID: edam@waxworlds.org-20100729205619-a9yo4uzu647nvnsj
- renamed database to connection to better identify what it is (would database_connection be better though?)
- moved basic_statement and basic_transaction to sqlite::detail
- made sqlite::threadsafe() return the threading mode int, not a bool
- renamed row::index() to row_number() so it isn't confused with column index
- added typedef for deferred_transaction
- added early rollback method to transaction_guard
- allowed transaction_guard::~transaction_guard() to throw exceptions, since when it needs to, we're really screwed anyway
- bugfix: query::reset() didn't reset the internal row counter
- added query::num_results()
- added docs/design-notes
- reimplemented query::iterator so that increment() (which performs a step() on the query) now caches the returned row to be returned during dereference() (previously it stashed details and returned new row!?)
- bugfix: resetting active queries during rollbacks would hang!

Show diffs side-by-side

added added

removed removed

25
25
 
26
26
 
27
27
#include <sqlite3cc/basic_statement.h>
28
 
#include <boost/thread/recursive_mutex.hpp>
29
28
 
30
29
 
31
30
namespace sqlite
40
39
 */
41
40
class command
42
41
        :
43
 
        public basic_statement
 
42
        public detail::basic_statement
44
43
{
45
44
//______________________________________________________________________________
46
45
//                                                                 instantiation
47
46
public:
48
47
 
49
48
        /**
50
 
         * Constructor that provides a database upon which to act and the SQL
 
49
         * Constructor that provides a connection upon which to act and the SQL
51
50
         * command to execute.
52
 
         * @param database a reference to a database
 
51
         * @param connection a reference to a connection
53
52
         * @param sql an SQL statement in UTF-8
54
53
         */
55
54
        explicit command(
56
 
                database &database,
 
55
                connection &connection,
57
56
                const std::string &sql );
58
57
 
59
58
        /**
60
 
         * Constructor that provides a database upon which to act.
61
 
         * @param database a reference to a database
 
59
         * Constructor that provides a connection upon which to act.
 
60
         * @param connection a reference to a connection
62
61
         */
63
62
        explicit command(
64
 
                database &database );
 
63
                connection &connection );
65
64
 
66
65
//______________________________________________________________________________
67
66
//                                                              public interface
83
82
         * @return an sqlite error code
84
83
         * @see sqlite3_step()
85
84
         */
86
 
        virtual int step();
 
85
        int step();
87
86
 
88
87
        /**
89
88
         * Execute the command. This is the same as doing a step().
140
139
        /** the rowid of the last successful insert command */
141
140
        long long _last_insert_rowid;
142
141
 
143
 
        /** exclusive use during command mutex */
144
 
        static boost::recursive_mutex _command_mutex;
145
 
 
146
142
};
147
143
 
148
144
 
 
145
namespace detail
 
146
{
 
147
 
 
148
 
 
149
// template specialisations for detail::basic_statement::operator <<()
 
150
template< >
 
151
basic_statement &basic_statement::operator << < detail::exec_t >(
 
152
        const detail::exec_t & );
 
153
 
 
154
 
 
155
} // namespace detail
 
156
 
 
157
 
149
158
} // namespace sqlite
150
159
 
151
160