我是用vc++编写的修改oracle数据库
事先定义了
_RecordsetPtr p_Record;
然后在修改保存的时候
CString sql;
sql = "select * from DEBUGGER.T_INFO";
p_Record->Open((_bstr_t)sql,p_Con.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
POSITION pos = m_list.GetFirstSelectedItemPosition();
int nItem = m_list.GetNextSelectedItem(pos);
for (int i=0;i<nItem;i++)
{
p_Record->MoveNext();
}
以上这些没错,可是运行到下面这句插入的时候就报错了。Fre是列的名字,m_fre是要修改的内容。
p_Record->PutCollect("Fre", (_bstr_t)m_fre);请问错在哪里?要怎么修改啊?谢谢!

解决方案 »

  1.   

    可能是插入空值问题.插入空值使用DBNull.Value,我也不太熟悉呵呵.
      

  2.   

    你要更改一个字段的值,写一个update的sql语句,然后提交给oracle数据库处理就得了,上面你用VC代码处理,我们不明白?
      

  3.   

    我这个库有一百多列,我只是要更新其中的几列,用update怎么写啊?
      

  4.   

    遵循update的标准语法即可update table set col1='' ,col2=''......
      

  5.   

    看来大家都不熟悉vc 啊,看你代码我都看不懂,唯一能看懂的就是
    select * ……
    更新几条,某几条,这样就是用 update …… + where (只有这几条满足的条件) ,这样简单啊,组合好之后你执行一下,ok
      

  6.   

    你有没有捕获运行到该句出错时的异常信息呢?
    你的p_Record->MoveNext没有判断记录集的EOF状态.很有可能是已经到记录集末了.