#include <sqlite3_db.h>
Inheritance diagram for DB::Sqlite3_ResultSet:

Public Member Functions | |
| bool | close (void) |
| bool | next (void) |
| unsigned long | recordCount (void) const |
| unsigned int | findColumn (const char *field) const |
| const char * | getString (const int idx) const |
| const int | getInteger (const int idx) const |
| const bool | getBool (const int idx) const |
| const time_t | getUnixTime (const int idx) const |
| const double | getDouble (const int idx) const |
| const float | getFloat (const int idx) const |
| const long | getLong (const int idx) const |
| const short | getShort (const int idx) const |
| void * | operator new (size_t bytes) |
| void | operator delete (void *ptr) |
Protected Member Functions | |
| Sqlite3_ResultSet (sqlite3_stmt *res) | |
| ~Sqlite3_ResultSet () | |
Private Member Functions | |
| Sqlite3_ResultSet () | |
| Sqlite3_ResultSet (const Sqlite3_ResultSet &old) | |
| const Sqlite3_ResultSet & | operator= (const Sqlite3_ResultSet &old) |
Private Attributes | |
| sqlite3_stmt * | res_ |
Friends | |
| class | Sqlite3_Connection |
Definition at line 31 of file sqlite3_db.h.
| DB::Sqlite3_ResultSet::Sqlite3_ResultSet | ( | sqlite3_stmt * | res | ) | [inline, protected] |
| DB::Sqlite3_ResultSet::~Sqlite3_ResultSet | ( | ) | [protected] |
Definition at line 33 of file sqlite3_db.cpp.
References res_.
00034 { 00035 if (res_) { 00036 ACE_DEBUG((LM_ERROR,"Warning ResultSet wasn't closed or deleted.\n")); 00037 } 00038 }
| DB::Sqlite3_ResultSet::Sqlite3_ResultSet | ( | ) | [inline, private] |
| DB::Sqlite3_ResultSet::Sqlite3_ResultSet | ( | const Sqlite3_ResultSet & | old | ) | [private] |
| bool DB::Sqlite3_ResultSet::close | ( | void | ) | [virtual] |
Implements DB::ResultSet.
Definition at line 41 of file sqlite3_db.cpp.
References res_.
00042 { 00043 int rc; 00044 00045 if (!res_) return (false); 00046 00047 // eat remaining rows, if there are some 00048 do { 00049 rc = sqlite3_step(res_); 00050 } while (rc != SQLITE_DONE && rc != SQLITE_ERROR && rc != SQLITE_MISUSE); 00051 00052 sqlite3_finalize(res_); 00053 res_ = NULL; 00054 delete this; 00055 00056 return (true); 00057 }
| unsigned int DB::Sqlite3_ResultSet::findColumn | ( | const char * | field | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 84 of file sqlite3_db.cpp.
References res_.
00085 { 00086 unsigned int num_fields; 00087 unsigned int i; 00088 const char *field; 00089 00090 num_fields = sqlite3_column_count(res_); 00091 for (i=0; i<num_fields; i++) { 00092 field = sqlite3_column_name(res_, i); 00093 if (ACE_OS::strcmp(field,fld) == 0) { 00094 return (i); 00095 } 00096 } 00097 return (i); 00098 }
| const bool DB::Sqlite3_ResultSet::getBool | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 113 of file sqlite3_db.cpp.
References res_.
00114 { 00115 register const char *v = (const char *) sqlite3_column_text(res_, idx); 00116 if (v && v[0] == '1') { 00117 return (true); 00118 } 00119 return (false); 00120 }
| const double DB::Sqlite3_ResultSet::getDouble | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 173 of file sqlite3_db.cpp.
References res_.
00174 { 00175 char *pEnd; 00176 return (ACE_OS::strtod((const char *) sqlite3_column_text(res_, idx), &pEnd)); 00177 }
| const float DB::Sqlite3_ResultSet::getFloat | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 180 of file sqlite3_db.cpp.
References res_.
00181 { 00182 return (atof((const char *) sqlite3_column_text(res_, idx))); 00183 }
| const int DB::Sqlite3_ResultSet::getInteger | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 107 of file sqlite3_db.cpp.
References res_.
00108 { 00109 return ((const int) ACE_OS::atoi((const char *) sqlite3_column_text(res_, idx))); 00110 }
| const long DB::Sqlite3_ResultSet::getLong | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 186 of file sqlite3_db.cpp.
References res_.
00187 { 00188 return (atol((const char *) sqlite3_column_text(res_, idx))); 00189 }
| const short DB::Sqlite3_ResultSet::getShort | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 192 of file sqlite3_db.cpp.
References res_.
00193 { 00194 return ((short) (ACE_OS::atoi((const char *) sqlite3_column_text(res_, idx)))); 00195 }
| const char * DB::Sqlite3_ResultSet::getString | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 101 of file sqlite3_db.cpp.
References res_.
00102 { 00103 return ((const char *) sqlite3_column_text(res_, idx)); 00104 }
| const time_t DB::Sqlite3_ResultSet::getUnixTime | ( | const int | idx | ) | const [virtual] |
Implements DB::ResultSet.
Definition at line 123 of file sqlite3_db.cpp.
References res_.
00124 { 00125 struct tm tmp; 00126 register const char *v = (const char *) sqlite3_column_text(res_, idx); 00127 // ACE_DEBUG((LM_DEBUG, ACE_TEXT("Read UnixTime: %s\n"), row_[idx])); 00128 00129 if (v) { 00130 // switch on the type of field 00131 // Basically, there are two types of returns I've seen 00132 // 1. has a hypen and is fully parseable 00133 // 2. has no hypen and is an older timestamp field 00134 // The others are raw DATE or TIME 00135 int Ypos = 0; 00136 int Mpos = 4; 00137 int Dpos = 6; 00138 int hpos = 8; 00139 int mpos = 10; 00140 int spos = 12; 00141 if (strchr(v, '-') != NULL) { 00142 ++Mpos; 00143 Dpos = 8; 00144 hpos = 11; 00145 mpos = 14; 00146 spos = 17; 00147 } 00148 tmp.tm_wday = 0; 00149 tmp.tm_yday = 0; 00150 tmp.tm_isdst = 0; 00151 tmp.tm_year = (((v[Ypos] - '0') * 1000) + ((v[Ypos+1] - '0') * 100) + ((v[Ypos+2] - '0') * 10) + (v[Ypos+3] - '0')) - 1900; 00152 tmp.tm_mon = (((v[Mpos] - '0') * 10) + (v[Mpos+1] - '0')) - 1; /* 0 - 11 */ 00153 tmp.tm_mday = (((v[Dpos] - '0') * 10) + (v[Dpos+1] - '0')); /* 1 - 31 */ 00154 tmp.tm_hour = (((v[hpos] - '0') * 10) + (v[hpos+1] - '0')) - 1; /* 0 - 23 */ 00155 tmp.tm_min = (((v[mpos] - '0') * 10) + (v[mpos+1] - '0')); /* 0-59 */ 00156 tmp.tm_sec = (((v[spos] - '0') * 10) + (v[spos+1] - '0')); /* 0-59 */ 00157 00158 /* 00159 ACE_DEBUG((LM_DEBUG, ACE_TEXT("y=%d m=%d d=%d h=%d m=%d s=%d\n"), 00160 tmp.tm_year, 00161 tmp.tm_mon, 00162 tmp.tm_mday, 00163 tmp.tm_hour, 00164 tmp.tm_min, 00165 tmp.tm_sec)); 00166 */ 00167 return (mktime(&tmp)); 00168 } 00169 return (0); 00170 }
| bool DB::Sqlite3_ResultSet::next | ( | void | ) | [virtual] |
Implements DB::ResultSet.
Definition at line 60 of file sqlite3_db.cpp.
References res_.
00061 { 00062 int rc; 00063 00064 do { 00065 rc = sqlite3_step(res_); 00066 if (rc == SQLITE_BUSY) { 00067 sleep(1); 00068 continue; 00069 } 00070 if (rc == SQLITE_ROW) { 00071 return (true); 00072 } 00073 } while (rc != SQLITE_DONE && rc != SQLITE_ERROR && rc != SQLITE_MISUSE); 00074 return (false); 00075 }
| void DB::Sqlite3_ResultSet::operator delete | ( | void * | ptr | ) |
| void * DB::Sqlite3_ResultSet::operator new | ( | size_t | bytes | ) |
| const Sqlite3_ResultSet& DB::Sqlite3_ResultSet::operator= | ( | const Sqlite3_ResultSet & | old | ) | [private] |
| unsigned long DB::Sqlite3_ResultSet::recordCount | ( | void | ) | const [virtual] |
friend class Sqlite3_Connection [friend] |
Definition at line 33 of file sqlite3_db.h.
sqlite3_stmt* DB::Sqlite3_ResultSet::res_ [private] |
Definition at line 72 of file sqlite3_db.h.
Referenced by close(), findColumn(), getBool(), getDouble(), getFloat(), getInteger(), getLong(), getShort(), getString(), getUnixTime(), next(), and ~Sqlite3_ResultSet().
1.4.7