ODBC 数据源,数据记录是只读

最近做了一个简单的管理软件,数据库使用的sqlserver2000,用odbc关联数据源,但是在对数据表进行修改时,总是提示:记录集是只读,我在sql下插入,修改数据是正常的,单就是在程序中使用总是有这个提示。我的代码情况:使用vs2008添加了一个类,模板是MFC odbc使用者,关联的数据表roominfo,自动生成代码,

CRoominfoset::CRoominfoset(CDatabase* pdb)
 : CRecordset(pdb)
{
 column1 = L"";
 column2 = L"";
 column3 = 0.0;
 column4 = L"";
 column5 = FALSE;
 column6 = L"";
 column7 = L"";
 column8 = L"";
 column9;
 m_nFields = 9;
 m_nDefaultType = dynaset;
}

 

在其它类中对数据表roominfo进行修改,

 CRoominfoset myroominfoset;

//获得选择的列表项目内容
 CString SQLstr;
 SQLstr="SELECT * FROM roomsetting where
房间号='" ;
 SQLstr+=roomnumber;
 SQLstr+="'";
 if(!myroominfoset.Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr))
 {//
查询数据库得到数据集合

   MessageBox(_T("
没有此房间号码,打开数据库失败!"),_T("客房管理系统"));
   if(myroominfoset.IsOpen())
   {//
关闭数据表

          myroominfoset.Close();
   }
  return ;
 }

 m_roomlevel=myroominfoset.column2;//读取数据
 m_room_money.SetWindowText((LPCTSTR)myroominfoset.column3);
 myroominfoset.Edit();
 //
设置数据库操作类型
 if (issave)
  myroominfoset.column4="
入住";
 myroominfoset.Update();
 myroominfoset.Requery();

 

以上就是对数据表进行修改的部分代码,通过断点调试,在执行到 myroominfoset.Edit();时出现了一个提示对话框:记录集是只读的,通过一番搜索,终于解决:表中必须有主键,否则不能插入,我把roominfo数据表添加上主键,问题就解决了,不要问我为什么,我也不知道微软为什么这么变态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值