diff options
Diffstat (limited to 'CommonLibs')
-rw-r--r-- | CommonLibs/sqlite3util.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/CommonLibs/sqlite3util.cpp b/CommonLibs/sqlite3util.cpp index b898445..036ef2c 100644 --- a/CommonLibs/sqlite3util.cpp +++ b/CommonLibs/sqlite3util.cpp @@ -1,6 +1,6 @@ /* -* Written by David A. Burgess, Kestrel Signal Processing, Inc., 2010 -* The author disclaims copyright to this source code. +* Copyright 2010 Kestrel Signal Processing, Inc. +* All rights reserved. */ @@ -17,12 +17,18 @@ int sqlite3_prepare_statement(sqlite3* DB, sqlite3_stmt **stmt, const char* query) { - int prc = sqlite3_prepare_v2(DB,query,strlen(query),stmt,NULL); - if (prc) { - fprintf(stderr,"sqlite3_prepare_v2 failed for \"%s\": %s\n",query,sqlite3_errmsg(DB)); - sqlite3_finalize(*stmt); - } - return prc; + int src = SQLITE_BUSY; + while (src==SQLITE_BUSY) { + src = sqlite3_prepare_v2(DB,query,strlen(query),stmt,NULL); + if (src==SQLITE_BUSY) { + usleep(100000); + } + } + if (src) { + fprintf(stderr,"sqlite3_prepare_v2 failed for \"%s\": %s\n",query,sqlite3_errmsg(DB)); + sqlite3_finalize(*stmt); + } + return src; } int sqlite3_run_query(sqlite3* DB, sqlite3_stmt *stmt) @@ -140,6 +146,7 @@ bool sqlite3_command(sqlite3* DB, const char* query) if (sqlite3_prepare_statement(DB,&stmt,query)) return false; // Run the query. int src = sqlite3_run_query(DB,stmt); + sqlite3_finalize(stmt); return src==SQLITE_DONE; } |