From 9a717577d06f00bb8a0c7338f7b687540b5e017d Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 4 Sep 2010 16:54:57 +0200 Subject: some fixes for unsigned int parameters for prepared statements --- src/connection.cpp | 7 +++++++ src/prepared_statement.cpp | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) (limited to 'src') diff --git a/src/connection.cpp b/src/connection.cpp index 30ab00a..5db2e4d 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -154,6 +154,13 @@ void connection::prepare_setparam( const string& name, const int pos, const int stmt->setparam( pos, value ); } +void connection::prepare_setparam( const string& name, const int pos, const unsigned int value ) { + prepared_stmt* stmt = find_prepared( name ); + if( _trace ) cout << "TRACE: prepared '" << name << "' param '" << + pos << "'" << " value: " << value << endl; + stmt->setparam( pos, value ); +} + void connection::prepare_setparam( const string& name, const int pos, const char* value ) { prepared_stmt* stmt = find_prepared( name ); if( _trace ) cout << "TRACE: prepared '" << name << "' param '" << diff --git a/src/prepared_statement.cpp b/src/prepared_statement.cpp index fef5090..b8074b3 100644 --- a/src/prepared_statement.cpp +++ b/src/prepared_statement.cpp @@ -68,6 +68,13 @@ prepare::invocation& prepare::invocation::setparam( const int& value, bool nonnu return *this; } +prepare::invocation& prepare::invocation::setparam( const unsigned int& value, bool nonnull ) { + SQLITEXX_UNUSED( nonnull ); + _pos++; + _c.prepare_setparam( _stmt, _pos, value ); + return *this; +} + prepare::invocation& prepare::invocation::setparam( const char* value, bool nonnull ) { SQLITEXX_UNUSED( nonnull ); _pos++; @@ -163,6 +170,19 @@ void prepared_stmt::setparam( const int pos, const int v ) { } } +void prepared_stmt::setparam( const int pos, const unsigned int v ) { + int rc; + assert( _stmt != NULL ); + rc = sqlite3_bind_int( _stmt, pos, v ); + if( rc != SQLITE_OK ) { + ostringstream s; + s << "sqlite3::prepared_stmt::setparam bind error: " + << sqlite3_errmsg( _db ) << " (rc: " << rc << ")"; + string msg = s.str( ); + throw sql_error( msg, _sql ); + } +} + void prepared_stmt::setparam( const int pos, const char* v ) { int rc; assert( _stmt != NULL ); -- cgit v1.2.3-54-g00ecf