diff options
Diffstat (limited to 'src/prepared_statement.cpp')
-rw-r--r-- | src/prepared_statement.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/prepared_statement.cpp b/src/prepared_statement.cpp index b8074b3..674fbec 100644 --- a/src/prepared_statement.cpp +++ b/src/prepared_statement.cpp @@ -122,11 +122,20 @@ prepared_stmt::prepared_stmt( sqlite3 *db, string __sql ) : #else rc = sqlite3_prepare( db, _sql.c_str( ), -1, &_stmt, &tail ); #endif - if( rc != SQLITE_OK ) { - ostringstream s; - s << "sqlite3::prepared_stmt::prepared_stmt error: " << sqlite3_errmsg( _db ); - string msg = s.str( ); - throw sql_error( msg, _sql ); + switch( rc ) { + case SQLITE_BUSY: + throw database_locked( ); + + case SQLITE_OK: + break; + + default: + { + ostringstream s; + s << "sqlite3::prepared_stmt::prepared_stmt error: " << sqlite3_errmsg( _db ); + string msg = s.str( ); + throw sql_error( msg, _sql ); + } } } |