summaryrefslogtreecommitdiff
path: root/src/prepared_statement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/prepared_statement.cpp')
-rw-r--r--src/prepared_statement.cpp19
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 );
+ }
}
}