added amb1377 - binary sql functions

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401918
This commit is contained in:
David Anderson
2008-03-02 18:01:49 +00:00
parent b3c7d4803f
commit 31a745422d
7 changed files with 142 additions and 9 deletions
+56 -5
View File
@@ -160,7 +160,36 @@ IQuery *SqDatabase::DoQuery(const char *query)
return pQuery;
}
IPreparedQuery *SqDatabase::PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode/* =NULL */)
bool SqDatabase::DoSimpleQueryEx(const char *query, size_t len)
{
IQuery *pQuery = DoQueryEx(query, len);
if (!pQuery)
{
return false;
}
pQuery->Destroy();
return true;
}
IQuery *SqDatabase::DoQueryEx(const char *query, size_t len)
{
IPreparedQuery *pQuery = PrepareQueryEx(query, len, NULL, 0, NULL);
if (!pQuery)
{
return NULL;
}
if (!pQuery->Execute())
{
pQuery->Destroy();
return NULL;
}
return pQuery;
}
IPreparedQuery *SqDatabase::PrepareQuery(const char *query,
char *error,
size_t maxlength,
int *errCode/* =NULL */)
{
sqlite3_stmt *stmt = NULL;
if ((m_LastErrorCode = sqlite3_prepare_v2(m_sq3, query, -1, &stmt, NULL)) != SQLITE_OK
@@ -179,12 +208,34 @@ IPreparedQuery *SqDatabase::PrepareQuery(const char *query, char *error, size_t
strncopy(error, msg, maxlength);
}
m_LastError.assign(msg);
#if 0 /* This didn't really seem like a good idea... */
if (stmt)
return NULL;
}
return new SqQuery(this, stmt);
}
IPreparedQuery *SqDatabase::PrepareQueryEx(const char *query,
size_t len,
char *error,
size_t maxlength,
int *errCode/* =NULL */)
{
sqlite3_stmt *stmt = NULL;
if ((m_LastErrorCode = sqlite3_prepare_v2(m_sq3, query, len, &stmt, NULL)) != SQLITE_OK
|| !stmt)
{
const char *msg;
if (m_LastErrorCode != SQLITE_OK)
{
sqlite3_finalize(stmt);
msg = sqlite3_errmsg(m_sq3);
} else {
msg = "Invalid query string";
m_LastErrorCode = SQLITE_ERROR;
}
#endif
if (error)
{
strncopy(error, msg, maxlength);
}
m_LastError.assign(msg);
return NULL;
}
return new SqQuery(this, stmt);
+3
View File
@@ -46,6 +46,7 @@ public:
bool DoSimpleQuery(const char *query);
IQuery *DoQuery(const char *query);
IPreparedQuery *PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode=NULL);
IPreparedQuery *PrepareQueryEx(const char *query, size_t len, char *error, size_t maxlength, int *errCode=NULL);
bool QuoteString(const char *str, char buffer[], size_t maxlen, size_t *newSize);
unsigned int GetAffectedRows();
unsigned int GetInsertID();
@@ -53,6 +54,8 @@ public:
void UnlockFromFullAtomicOperation();
void IncReferenceCount();
IDBDriver *GetDriver();
bool DoSimpleQueryEx(const char *query, size_t len);
IQuery *DoQueryEx(const char *query, size_t len);
public:
sqlite3 *GetDb();
private: