added amb1377 - binary sql functions
--HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401918
This commit is contained in:
@@ -226,6 +226,37 @@ IQuery *MyDatabase::DoQuery(const char *query)
|
||||
return new MyQuery(this, res);
|
||||
}
|
||||
|
||||
bool MyDatabase::DoSimpleQueryEx(const char *query, size_t len)
|
||||
{
|
||||
IQuery *pQuery = DoQueryEx(query, len);
|
||||
if (!pQuery)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
pQuery->Destroy();
|
||||
return true;
|
||||
}
|
||||
|
||||
IQuery *MyDatabase::DoQueryEx(const char *query, size_t len)
|
||||
{
|
||||
if (mysql_real_query(m_mysql, query, len) != 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
MYSQL_RES *res = NULL;
|
||||
if (mysql_field_count(m_mysql))
|
||||
{
|
||||
res = mysql_store_result(m_mysql);
|
||||
if (!res)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return new MyQuery(this, res);
|
||||
}
|
||||
|
||||
IPreparedQuery *MyDatabase::PrepareQuery(const char *query, char *error, size_t maxlength, int *errCode)
|
||||
{
|
||||
MYSQL_STMT *stmt = mysql_stmt_init(m_mysql);
|
||||
|
||||
@@ -58,6 +58,8 @@ public: //IDatabase
|
||||
void UnlockFromFullAtomicOperation();
|
||||
void IncReferenceCount();
|
||||
IDBDriver *GetDriver();
|
||||
bool DoSimpleQueryEx(const char *query, size_t len);
|
||||
IQuery *DoQueryEx(const char *query, size_t len);
|
||||
public:
|
||||
const DatabaseInfo &GetInfo();
|
||||
private:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user