void DbTable::Drop(DbTransaction& tx) { if (tx.ReadOnly) Throw(E_ACCESSDENIED); DbCursor(tx, _self).Drop(); ConstBuf k(Name.c_str(), strlen(Name.c_str())); DbTable::Main.Delete(tx, k); }
bool DbNext(int qid){ bool ret = true; ret = DbCursor(qid,1); if(ret == false) return false; ret = DbFetch(qid); return ret; }
void MultiDLDbDbCursorImpl::deactivate() { StLock<Mutex> _(mActivateMutex); if (mActive) { mActive = false; mListRef = MultiDLDbImpl::ListRef(); mNext = mEnd; mCursor = DbCursor(); } }
bool MultiDLDbDbCursorImpl::next(DbAttributes *attributes, ::CssmDataContainer *data, DbUniqueRecord &uniqueId) { activate(); for (;;) { if (!mCursor) { if (mNext == mEnd) { // This is how it ends. deactivate(); return false; } mCursor = DbCursor(multiDLDb()->database(*mNext++), *this); } try { if (mCursor->next(attributes, data, uniqueId)) return true; } catch(const CommonError &err) { OSStatus status = err.osStatus(); if(status != CSSMERR_DL_DATASTORE_DOESNOT_EXIST) throw; } mCursor = DbCursor(); } }
int DbResultCount(int qid){ int len = 1; cci_cursor(qid, 0, CCI_CURSOR_FIRST, &cciErr); while(true){ if (!DbCursor(qid,1) ) break; if(!DbFetch(qid)) break; len ++; } cci_cursor(qid, -len, CCI_CURSOR_CURRENT, &cciErr); return len-1; }
PhotoPost *QueryPhotoList(int db,char *id,int min, int max,int *cnt){ int ret = true; int q, i; char qm[256]; int len = 0, count =0; char *sp; sprintf(qm, "select * from \"photo\" where \"id\" = \'%s\' and " "rownum between %d and %d;", id, min, max); q = DbPrepare(db,qm); if(!DbExecute(q)){ printf("Execute failed\n"); ret = false; goto CleanUp; } PhotoPost *list = NULL; list = (PhotoPost*)malloc(sizeof(PhotoPost) * (max-min+1)); if(list == NULL) goto CleanUp; for(i=0;;i++) { if(!DbCursor(q,1)) break; if(!DbFetch(q)) break; //PhotoPost *list; //list = &_list[i]; SET(list[i].id, id); len = DbGetNumber(q, PHOTO_INDEX_PHOTOID); list[i].photo_id = len; len = DbGetNumber(q, PHOTO_INDEX_TIME); list[i].time = len; len = DbGetString(q, PHOTO_INDEX_PHOTO, &sp); strcpy(list[i].photo, sp); len = DbGetNumber(q, PHOTO_INDEX_LAT); list[i].lat = len; len = DbGetNumber(q, PHOTO_INDEX_LON); list[i].lon = len; len = DbGetString(q, PHOTO_INDEX_COMMENT, &sp); strcpy(list[i].comment, sp); len = DbGetNumber(q, PHOTO_INDEX_LIKE); list[i].like = len; } count = i; *cnt = count; CleanUp: DbCloseQuery(q); return list; }