- 論壇徽章:
- 1
|
本帖最后由 umyspl 于 2010-09-08 15:51 編輯
這是查詢- bool CPqRecordset::Each(uint32_t nRows, uint32_t nCol, void *value, SQL_RET_TYPE _type)const
- {
- if(status != IRS_ERR_OK)return false;
- char * tmp = PQgetvalue(pPQrlt,nRows,nCol);
- switch(_type)
- {
- case SQL_RET_INT8:
- case SQL_RET_UINT8:
- memcpy(value,(void*)tmp,sizeof(uint8_t));
- return true;
- case SQL_RET_UINT16:
- case SQL_RET_INT16:
- memcpy(value,(void*)tmp,sizeof(uint16_t));
- return true;
- case SQL_RET_INT32:
- case SQL_RET_UINT32:
- memcpy(value,(void*)tmp,sizeof(uint32_t));
- return true;
- case SQL_RET_INT64:
- case SQL_RET_UINT64:
- memcpy(value,(void*)tmp,sizeof(uint64_t));
- return true;
- case SQL_RET_DOUBLE:
- memcpy(value,(void*)tmp,sizeof(double));
- return true;
- case SQL_RET_FLOAT:
- memcpy(value,(void*)tmp,sizeof(float));
- return true;
- case SQL_RET_PPCHAR:
- *((void**)value) = (void*)tmp;
- return true;
- default:return false;
- }
- }
復(fù)制代碼 測(cè)試代碼- uint64_t user_id;
- char * user_name,*user_phone;
- cpqrs.Each(0, 0, &user_id, SQL_RET_UINT64);
- cpqrs.Each(0, 1, (void*)&user_name, SQL_RET_PPCHAR);
- cpqrs.Each(0, 2, (void*)&user_phone, SQL_RET_PPCHAR);
- std::cout<<"\n------------------------------------------------------\n";
- std::cout<<"-----uid:"<<user_id<<std::endl;
- std::cout<<"---uname:"<<user_name<<std::endl;
- std::cout<<"userphone:"<<user_phone<<std::endl;
- InitRowAr(line_0,3);
- std::cout<<"userId:"<<GetRowInt64(line_0,0)<<std::endl;
復(fù)制代碼 結(jié)果- /** CDatabase Test Begin -----------------------------------------------------------**/
- PgDB->Query
- ------------------------------------------------------
- -----uid:14133329480791089
- ---uname:Virus
- userphone:13813813838
- userId:3055692486422439423
- -------------------------------------
復(fù)制代碼 現(xiàn)在的問(wèn)題是字符串都讀對(duì)了。但是那個(gè)64位的bigint型的數(shù)值不對(duì)。什么地方有錯(cuò)么。
這邊沒(méi)經(jīng)過(guò)什么處理。只有指針和指針類型強(qiáng)轉(zhuǎn)。
memcpy之前我printf過(guò)了,結(jié)果跟那個(gè):14133329480791089一樣的。- 1423062;"Virus";"13813813838 ";"123456 ";0;9;0;1273644186;0;0;1;0;"''"
復(fù)制代碼 這個(gè)是原數(shù)據(jù)。
那個(gè)uid應(yīng)該==1423062
請(qǐng)熟悉的人指導(dǎo)下。謝謝。 |
|