数据库保存出错!

langxiao12345 2012-03-20 02:18:30
_RecordsetPtr pRsAJ("ADODB.Recordset");


sql=CString("Select * From BuildInfo ")+CString("Where XMBH = '")+m_XMBH+CString("' ")+CString("And FWMC = '")+m_FWMC+CString("'");

try
{
pRsAJ->Open((LPCTSTR)sql,g_pCnHTXT.GetInterfacePtr(),\
adOpenStatic, adLockOptimistic, adCmdText);
}
catch(...)
{
if (pRsAJ->GetState()==adStateOpen) pRsAJ->Close();
AfxMessageBox(_T("获取案件房屋信息出错!\n")); return;
}
if(pRsAJ->ADOEOF) pRsAJ->AddNew();

try
{
pRsAJ->PutCollect("XMBH", _variant_t(m_XMBH));
pRsAJ->PutCollect("FWMC", _variant_t(m_FWMC));
vTemp.intVal=_tstoi(m_RowNo);pRsAJ->PutCollect("ROWNO", vTemp);
vTemp.intVal=_tstoi(m_ZTS); pRsAJ->PutCollect("TaoShu", vTemp);
vTemp.intVal=_tstoi(m_ZCS); pRsAJ->PutCollect("ZCS", vTemp);
vTemp.intVal=_tstoi(m_JZCS);pRsAJ->PutCollect("JZCS", vTemp);
vTemp.intVal=_tstoi(m_DXCS);pRsAJ->PutCollect("DXCS",vTemp);

}
catch(_com_error e)
{
CString strErrMsg=e.ErrorMessage();
AfxMessageBox(_T("保存房屋信息出错!\n")); return;
}

问题出现了:

ROWNO,TAOSHU 两个字段在数据库(ORACLE)里的数据类型是NUMBER(4).m_RowNo,m_ZTS是保存输入框结果的CString类型的字符串,结果发现当我在两个框里分别输入3,4时,数据库的结果没有保存,显示为0.
也就是vTemp.intVal=_tstoi(m_RowNo);这里的m_RowNo显示数据是3,但vTemp.intVal显示值为0.
求解!!

...全文
93 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
langxiao12345 2012-03-20
  • 打赏
  • 举报
回复
如下设置Vtemp的属性就行了:

vTemp.vt=VT_I4;

问题解决。
langxiao12345 2012-03-20
  • 打赏
  • 举报
回复
NUMBER(13,4)这种类型的可以保存,

即:字段YDMJ是NUMBER(13,4)类型的。
vTemp.dblVal=_tstof(m_YDMJ); pRsAJ->PutCollect("YDMJ", vTemp);
这样没错。

上面的 ROWNO字段是NUMBER(4)类型的.

但NUMBER(4)这种不可以保存,

为什么?
langxiao12345 2012-03-20
  • 打赏
  • 举报
回复
你的方法试过了,调试的时候显示是我输入的值,但是一看数据库,还是0.

郁闷~!·
SuperLy 2012-03-20
  • 打赏
  • 举报
回复
CString m_RowNo=_T("3");
int Val=_tstoi(m_RowNo);
无论多字节还是Unicode均可得到Val为3的结果;
所以,检查m_RowNo的值究竟是多少?要不,直接先CString m_RowNo=_T("3");看看结果如何?
最好打印出来看看。
SuperLy 2012-03-20
  • 打赏
  • 举报
回复
CString m_RowNo=_T("3");
int Val=_tstoi(m_RowNo);
无论多字节还是Unicode均可得到Val为3的结果;
所以,检查m_RowNo的值究竟是多少?要不,直接先CString m_RowNo=_T("3");看看结果如何?
最好打印出来看看。
langxiao12345 2012-03-20
  • 打赏
  • 举报
回复
CString 类型,程序代码是多字节的,数据库是ORACLE的。

[Quote=引用 2 楼 superly 的回复:]

m_RowNo 的类型是什么?
特别注意一下 Unicode问题,是不是数据库里取的是Unicode数据,而转换的时候类型不对?
[/Quote]
SuperLy 2012-03-20
  • 打赏
  • 举报
回复
m_RowNo 的类型是什么?
特别注意一下 Unicode问题,是不是数据库里取的是Unicode数据,而转换的时候类型不对?
qixing1115 2012-03-20
  • 打赏
  • 举报
回复
不懂
回复内容太短了!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧