1.1 --- a/extensions/sqlite/driver/SqDatabase.cpp Sun Mar 02 08:10:34 2008 +0000
1.2 +++ b/extensions/sqlite/driver/SqDatabase.cpp Sun Mar 02 18:01:49 2008 +0000
1.3 @@ -160,7 +160,36 @@
1.4 return pQuery;
1.5 }
1.6
1.7 -IPreparedQuery *SqDatabase::PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode/* =NULL */)
1.8 +bool SqDatabase::DoSimpleQueryEx(const char *query, size_t len)
1.9 +{
1.10 + IQuery *pQuery = DoQueryEx(query, len);
1.11 + if (!pQuery)
1.12 + {
1.13 + return false;
1.14 + }
1.15 + pQuery->Destroy();
1.16 + return true;
1.17 +}
1.18 +
1.19 +IQuery *SqDatabase::DoQueryEx(const char *query, size_t len)
1.20 +{
1.21 + IPreparedQuery *pQuery = PrepareQueryEx(query, len, NULL, 0, NULL);
1.22 + if (!pQuery)
1.23 + {
1.24 + return NULL;
1.25 + }
1.26 + if (!pQuery->Execute())
1.27 + {
1.28 + pQuery->Destroy();
1.29 + return NULL;
1.30 + }
1.31 + return pQuery;
1.32 +}
1.33 +
1.34 +IPreparedQuery *SqDatabase::PrepareQuery(const char *query,
1.35 + char *error,
1.36 + size_t maxlength,
1.37 + int *errCode/* =NULL */)
1.38 {
1.39 sqlite3_stmt *stmt = NULL;
1.40 if ((m_LastErrorCode = sqlite3_prepare_v2(m_sq3, query, -1, &stmt, NULL)) != SQLITE_OK
1.41 @@ -179,12 +208,34 @@
1.42 strncopy(error, msg, maxlength);
1.43 }
1.44 m_LastError.assign(msg);
1.45 - #if 0 /* This didn't really seem like a good idea... */
1.46 - if (stmt)
1.47 + return NULL;
1.48 + }
1.49 + return new SqQuery(this, stmt);
1.50 +}
1.51 +
1.52 +IPreparedQuery *SqDatabase::PrepareQueryEx(const char *query,
1.53 + size_t len,
1.54 + char *error,
1.55 + size_t maxlength,
1.56 + int *errCode/* =NULL */)
1.57 +{
1.58 + sqlite3_stmt *stmt = NULL;
1.59 + if ((m_LastErrorCode = sqlite3_prepare_v2(m_sq3, query, len, &stmt, NULL)) != SQLITE_OK
1.60 + || !stmt)
1.61 + {
1.62 + const char *msg;
1.63 + if (m_LastErrorCode != SQLITE_OK)
1.64 {
1.65 - sqlite3_finalize(stmt);
1.66 + msg = sqlite3_errmsg(m_sq3);
1.67 + } else {
1.68 + msg = "Invalid query string";
1.69 + m_LastErrorCode = SQLITE_ERROR;
1.70 }
1.71 - #endif
1.72 + if (error)
1.73 + {
1.74 + strncopy(error, msg, maxlength);
1.75 + }
1.76 + m_LastError.assign(msg);
1.77 return NULL;
1.78 }
1.79 return new SqQuery(this, stmt);