新手求助postgresql 的C api
时间:2010-09-08
来源:互联网
本帖最后由 umyspl 于 2010-09-08 15:51 编辑
这是查询
复制代码
测试代码
复制代码
结果
复制代码
现在的问题是字符串都读对了。但是那个64位的bigint型的数值不对。什么地方有错么。
这边没经过什么处理。只有指针和指针类型强转。
memcpy之前我printf过了,结果跟那个:14133329480791089一样的。
复制代码
这个是原数据。
那个uid应该==1423062
请熟悉的人指导下。谢谢。
这是查询
- 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;
- }
- }
- 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;
- /** CDatabase Test Begin -----------------------------------------------------------**/
- PgDB->Query
-
- ------------------------------------------------------
- -----uid:14133329480791089
- ---uname:Virus
- userphone:13813813838
- userId:3055692486422439423
- -------------------------------------
这边没经过什么处理。只有指针和指针类型强转。
memcpy之前我printf过了,结果跟那个:14133329480791089一样的。
- 1423062;"Virus";"13813813838 ";"123456 ";0;9;0;1273644186;0;0;1;0;"''"
那个uid应该==1423062
请熟悉的人指导下。谢谢。
作者: umyspl 发布时间: 2010-09-08
好吧。知道了。原来是字符串形式的。不是二进制整数。。
作者: umyspl 发布时间: 2010-09-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28