コード例 #1
0
ファイル: ltdb.c プロジェクト: Coneboy-k/HeidsoftNote
/*单条记录操作*/
LT_DBROW ltDbOneRow(ltDbConn *pConn,int *fieldnum,char *pSmt,...)
{
    LT_DBROW tempRow;
    DB_CURSOR *dbcursor;
    int iReturn;
    va_list ap;
    char caSmt[4096];
    int i;

    va_start(ap,pSmt);
    vsprintf(caSmt,pSmt,ap);
    va_end(ap);
    tempRow=NULL;

    dbcursor=ltDbOpenCursorB(pConn,caSmt,0);
    if(dbcursor==NULL){
	return NULL;
    }
    iReturn = dbFetch(dbcursor);
    if(iReturn == 0) {
        dbClose(dbcursor);
        return NULL;
    }
    
    *fieldnum=dbcursor->nDef;
    tempRow=(LT_DBROW)malloc((*fieldnum)*sizeof(char *));
    if(tempRow==NULL){
	 dbClose(dbcursor);
         return NULL;	
    }
    for(iReturn=0;iReturn<(*fieldnum);iReturn++){
    	tempRow[iReturn] =(char *)malloc(dbcursor->pDef[iReturn].bufl+1);
	if(tempRow[iReturn]==NULL){
		dbClose(dbcursor);
		return NULL;
	}
	memcpy(tempRow[iReturn],dbcursor->pDef[iReturn].buf,dbcursor->pDef[iReturn].bufl);
        tempRow[dbcursor->pDef[iReturn].bufl]=0;
   }
   dbClose(dbcursor);
   return tempRow;
}
コード例 #2
0
ファイル: ltdb.c プロジェクト: Coneboy-k/HeidsoftNote
/*fetch并得到字段值*/
LT_DBROW  ltDbFetchRow(ltDbCursor *ltCursor){
    LT_DBROW tmp;
    int iTemp;
    unsigned int fieldnum;
    int iReturn;
    iReturn = dbFetch(ltCursor->db_cursor);
    if(iReturn == 0) {
	 return NULL;
    }
    /*释放字段值*/
    if(ltCursor->db_row){
		if(ltCursor->num_field>0){
			for(iTemp=0;iTemp<ltCursor->num_field;iTemp++){
				if(ltCursor->db_row[iTemp]){
					free(ltCursor->db_row[iTemp]);
				}
			}
		}
		free(ltCursor->db_row);
		ltCursor->db_row=NULL;
    }
	
    fieldnum=ltCursor->db_cursor->nDef;
    tmp=(LT_DBROW)malloc(fieldnum*sizeof(char *));

    for(iReturn=0;iReturn<fieldnum;iReturn++){
	
    	tmp[iReturn] =(char *)malloc(ltCursor->db_cursor->pDef[iReturn].bufl+1);
	if(tmp[iReturn]==NULL){
		return NULL;
	}
	memcpy(tmp[iReturn],ltCursor->db_cursor->pDef[iReturn].buf,ltCursor->db_cursor->pDef[iReturn].bufl);
        tmp[ltCursor->db_cursor->pDef[iReturn].bufl]=0;
   }

   ltCursor->db_row=tmp;	  
   return tmp;
}
コード例 #3
0
ファイル: database.c プロジェクト: benparham/cs165
int executeCommand(connection *con) {
	tableInfo *tbl = con->tbl;
	command *cmd = con->cmd;
	response *res = con->res;
	error *err = con->err;

	int dataBytes = con->dataBytes;
	void *data = con->data;

	printf("Received command: '%s'\n", CMD_NAMES[cmd->cmd]);
	int result = 0;

	// Check that table is in use if needed
	if (!tbl->isValid && cmdNeedsTable(cmd)) {
		ERROR(err, E_USETBL);
		return 1;
	}

	switch (cmd->cmd) {
		case CMD_USE:
			result = dbUseTable(tbl, (char *) cmd->args, res, err);
			break;
		case CMD_CREATE_TABLE:
			result = dbCreateTable((char *) cmd->args, res, err);
			break;
		case CMD_REMOVE_TABLE:
			result = dbRemoveTable((char *) cmd->args, res, err);
			break;
		case CMD_PRINT_VAR:
			result = dbPrintVar((char *) cmd->args, res, err);
			break;
		case CMD_CREATE:
			result = dbCreateColumn(tbl, (createColArgs *) cmd->args, res, err);
			break;
		case CMD_REMOVE:
			result = dbRemoveColumn(tbl, (char *) cmd->args, res, err);
			break;
		case CMD_INSERT:
			result = dbInsert(tbl, (insertArgs *) cmd->args, res, err);
			break;
		case CMD_SELECT:
			result = dbSelect(tbl, (selectArgs *) cmd->args, res, err);
			break;
		case CMD_FETCH:
			result = dbFetch(tbl, (fetchArgs *) cmd->args, res, err);
			break;
		case CMD_LOAD:
			result = dbLoad(tbl, (loadArgs *) cmd->args, dataBytes, data, res, err);
			break;
		case CMD_PRINT:
			result = dbPrint(tbl, (char *) cmd->args, res, err);
			break;
		case CMD_MIN:
			result = dbMinimum((char *) cmd->args, res, err);
			break;
		case CMD_MAX:
			result = dbMaximum((char *) cmd->args, res, err);
			break;
		case CMD_SUM:
			result = dbSum((char *) cmd->args, res, err);
			break;
		case CMD_AVG:
			result = dbAverage((char *) cmd->args, res, err);
			break;
		case CMD_CNT:
			result = dbCount((char *) cmd->args, res, err);
			break;
		case CMD_ADD:
			result = dbAdd((mathArgs *) cmd->args, res, err);
			break;
		case CMD_SUB:
			result = dbSubtract((mathArgs *) cmd->args, res, err);
			break;
		case CMD_MUL:
			result = dbMultiply((mathArgs *) cmd->args, res, err);
			break;
		case CMD_DIV:
			result = dbDivide((mathArgs *) cmd->args, res, err);
			break;
		case CMD_LOOPJOIN:
			result = dbLoopJoin((joinArgs *) cmd->args, res, err);
			break;
		case CMD_EXIT:
			ERROR(err, E_EXIT);
			result = 1;
			break;
		default:
			ERROR(err, E_INTERN);
			result = 1;
			break;
	}

	return result;
}