Пример #1
0
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);
}
Пример #2
0
bool DbNext(int qid){
	bool ret = true;
	ret = DbCursor(qid,1);
	if(ret == false)
		return false;
	ret = DbFetch(qid);
	return ret;
}
Пример #3
0
void
MultiDLDbDbCursorImpl::deactivate()
{
    StLock<Mutex> _(mActivateMutex);
	if (mActive)
	{
		mActive = false;
		mListRef = MultiDLDbImpl::ListRef();
		mNext = mEnd;
		mCursor = DbCursor();
	}
}
Пример #4
0
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();
	}
}
Пример #5
0
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;
}
Пример #6
0
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;
}