/sqlite3cc

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

« back to all changes in this revision

Viewing changes to src/basic_statement.cc

  • Committer: edam
  • Date: 2010-07-27 15:46:42 UTC
  • Revision ID: edam@waxworlds.org-20100727154642-1uxrjkpxhp7xl6hq
- moved null_t, exec_t and set_index_t to detail namespace so only their extern instantiations are in the main namespace
- added immediate transation

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
#include <sqlite3cc/database.h>
26
26
#include <sqlite3cc/manipulator.h>
27
27
#include <string.h>
 
28
#include <iomanip>
28
29
 
29
30
 
30
31
sqlite::basic_statement::basic_statement(
35
36
        _handle( NULL ),
36
37
        _bind_index( 1 )
37
38
{
38
 
        int code = prepare( sql );
39
 
        if( code != SQLITE_OK ) throw sqlite_error( database, code );
 
39
        int error_code = prepare( sql );
 
40
        if( error_code != SQLITE_OK ) throw sqlite_error( error_code );
40
41
}
41
42
 
42
43
 
145
146
 
146
147
int sqlite::basic_statement::finalize()
147
148
{
148
 
        int code = SQLITE_OK;
 
149
        int error_code = SQLITE_OK;
149
150
 
150
151
        if( _handle ) {
151
 
                code = sqlite3_finalize( _handle );
 
152
                error_code = sqlite3_finalize( _handle );
152
153
                _handle = NULL;
153
154
        }
154
155
 
155
 
        return code;
 
156
        return error_code;
 
157
}
 
158
 
 
159
 
 
160
int sqlite::basic_statement::step()
 
161
{
 
162
        return sqlite3_step( _handle );
156
163
}
157
164
 
158
165
 
165
172
}
166
173
 
167
174
 
168
 
int sqlite::basic_statement::step()
169
 
{
170
 
        return sqlite3_step( _handle );
171
 
}
172
 
 
173
 
 
174
 
 
175
175
template< >
176
176
sqlite::basic_statement &sqlite::basic_statement::operator <<
177
177
        < sqlite::detail::null_t >(
178
178
        const sqlite::detail::null_t & )
179
179
{
180
 
        int code = bind_null( _bind_index );
181
 
        if( code != SQLITE_OK ) throw sqlite_error( _database, code );
 
180
        int error_code = bind_null( _bind_index );
 
181
        if( error_code != SQLITE_OK ) throw sqlite_error( error_code );
182
182
        _bind_index++;
183
183
        return *this;
184
184
}
186
186
 
187
187
template< >
188
188
sqlite::basic_statement &sqlite::basic_statement::operator <<
 
189
        < sqlite::detail::exec_t >(
 
190
        const sqlite::detail::exec_t & )
 
191
{
 
192
        int error_code = step();
 
193
        if( error_code != SQLITE_DONE ) {
 
194
                if( error_code == SQLITE_ROW )
 
195
                        throw sqlite_error( "statement returned results" );
 
196
                else
 
197
                        throw sqlite_error( error_code );
 
198
        }
 
199
        return *this;
 
200
}
 
201
 
 
202
 
 
203
template< >
 
204
sqlite::basic_statement &sqlite::basic_statement::operator <<
189
205
        < sqlite::detail::set_index_t >(
190
206
        const sqlite::detail::set_index_t &t )
191
207
{