#include <SqliteInterface.h>
Inheritance diagram for SqliteInterface:
Public Member Functions | |
int | connect () |
int | connect () |
int | disconnect () |
int | disconnect () |
bool | is_connected () |
bool | is_connected () |
int | query (std::string dbname, std::string query, DatabaseRecordVector &records) |
int | query (std::string dbname, std::string query) |
int | query (std::string dbname, std::string query, DatabaseRecordVector &records) |
int | query (std::string dbname, std::string query) |
int | select_db (std::string dbname) |
int | select_db (std::string dbname) |
void | set_dbpath (std::string path) |
void | set_dbpath (std::string path) |
void | set_host (std::string host) |
void | set_host (std::string host) |
void | set_passwd (std::string passwd) |
void | set_passwd (std::string passwd) |
void | set_reuse_connection (bool flag) |
void | set_reuse_connection (bool flag) |
void | set_user (std::string user) |
void | set_user (std::string user) |
SqliteInterface () | |
SqliteInterface () | |
~SqliteInterface () | |
~SqliteInterface () | |
Protected Member Functions | |
int | connect (std::string fname) |
int | connect (std::string fname) |
Protected Attributes | |
std::string | m_dbHost |
std::string | m_dbName |
std::string | m_dbPasswd |
std::string | m_dbPath |
std::string | m_dbUser |
bool | m_isConnected |
bool | m_reuseConnection |
Private Attributes | |
sqlite3 * | m_conn |
sqlite3 * | m_conn |
|
00024 {}
|
|
00026 {}
|
|
|
|
|
|
|
|
Implements DbInterface. |
|
00034 { 00035 int status = sqlite3_open_v2(fname.c_str(), &m_conn, SQLITE_OPEN_READONLY,0); 00036 if( status ){ 00037 cerr << "Can't open database " << fname << ": " 00038 << sqlite3_errmsg(m_conn) << endl; 00039 cerr.flush(); 00040 sqlite3_close(m_conn); 00041 return -1; 00042 } 00043 00044 std::cout << "Open database " << fname << std::endl; 00045 00046 m_isConnected = true; 00047 00048 return 0; 00049 }
|
|
Implements DbInterface. 00029 {
00030 return 0;
00031 }
|
|
Implements DbInterface. |
|
Implements DbInterface. 00157 { 00158 sqlite3_close(m_conn); 00159 m_isConnected = false; 00160 return 0; 00161 }
|
|
00027 { return m_isConnected; }
|
|
00027 { return m_isConnected; }
|
|
Implements DbInterface. |
|
Implements DbInterface. |
|
Implements DbInterface. 00080 { 00081 char *zErrMsg = 0; 00082 // char ***pazResult; 00083 // int pnRow; 00084 // int pnColumn; 00085 00086 int status = select_db(dbname); 00087 if(status<0) 00088 return -1; 00089 00090 records.clear(); 00091 // status = sqlite3_exec(m_conn, sql.c_str(), callback, &records, &zErrMsg); 00092 sqlite3_stmt *ppStmt; 00093 sqlite3_prepare_v2(m_conn, sql.c_str(), -1, &ppStmt, 0); 00094 00095 while ( true ) 00096 { 00097 status = sqlite3_step(ppStmt); 00098 if(status == SQLITE_DONE) 00099 { 00100 break; 00101 } 00102 00103 if(status == SQLITE_ROW) 00104 { 00105 DatabaseRecord* dbrec = new DatabaseRecord; 00106 00107 //loop over columns 00108 int ncolumns = sqlite3_column_count(ppStmt); 00109 int i; 00110 for(i=0; i<ncolumns; i++) 00111 { 00112 // create new record 00113 unsigned long field_len = sqlite3_column_bytes(ppStmt,i); 00114 char* new_record; 00115 const char* col_name = sqlite3_column_name(ppStmt,i); 00116 char column_name[255]; 00117 strcpy(column_name,col_name); 00118 int type = sqlite3_column_type(ppStmt,i); 00119 if(type == SQLITE_BLOB) 00120 { 00121 new_record = new char[field_len]; 00122 char* col_result = (char*)sqlite3_column_blob(ppStmt,i); 00123 memcpy(new_record,col_result,field_len); 00124 } 00125 else if (type != SQLITE_NULL) 00126 { 00127 new_record = new char[field_len+1]; 00128 char* col_result = (char*)sqlite3_column_text(ppStmt,i); 00129 strcpy(new_record,col_result); 00130 } 00131 else 00132 { 00133 new_record = NULL; 00134 } 00135 (*dbrec)[column_name] = new_record; 00136 } 00137 00138 records.push_back(dbrec); 00139 00140 continue; 00141 } 00142 00143 // anything else means that error happened 00144 cerr << "SQLITE query error: " << zErrMsg << endl; 00145 return -1; 00146 } 00147 00148 sqlite3_free(zErrMsg); 00149 00150 if(! m_reuseConnection) 00151 disconnect(); 00152 00153 return records.size(); 00154 }
|
|
Implements DbInterface. 00073 { 00074 DatabaseRecordVector dummy; 00075 int status = query(dbname, sql, dummy); 00076 return status; 00077 }
|
|
Implements DbInterface. |
|
Implements DbInterface. 00052 { 00053 if(m_isConnected) 00054 { 00055 if(m_dbName != dbname) // need to change db 00056 disconnect(); 00057 } 00058 00059 m_dbName = dbname; 00060 string fname = m_dbPath+"/"+m_dbName+".db"; 00061 00062 if(! m_isConnected) 00063 { 00064 int status = connect(fname); 00065 if(status<0) 00066 return -1; 00067 } 00068 00069 return 0; 00070 }
|
|
00032 {m_dbPath=path;};
|
|
00032 {m_dbPath=path;};
|
|
00029 {m_dbHost=host;};
|
|
00029 {m_dbHost=host;};
|
|
00031 {m_dbPasswd=passwd;};
|
|
00031 {m_dbPasswd=passwd;};
|
|
00033 { m_reuseConnection=flag;};
|
|
00033 { m_reuseConnection=flag;};
|
|
00030 {m_dbUser=user;};
|
|
00030 {m_dbUser=user;};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|