CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

这个odbc问题不会很难吧,为什么没有人回答,望不吝赐教,发表您的意见,回答者有分。

楼主ocean69()2005-07-03 22:03:25 在 VC/MFC / 数据库 提问

用odbc写access数据库的最基本问题,我用以下方法操作多个CRecordSet的派生类向access数据库的多个表里写数据,总出现被admin用户锁定无法更新的错误。  
  是以下写法有错误,还是怀疑其他的没有列出的部分含有错误?  
     
  CRecordSet的派生类     m_RouteDB,   m_RouteDB2,   m_RouteDB3,   m_RouteDB4;   //(每个派生类都对应一个表)我对这里面每个派生类都进行以下相同的操作:  
   
     
  int   m_nstep,   callsign,   comu_time,   end_time;  
  //////////////////////////////////////////////////////////////  
  CRecordSet的派生类     m_RouteDB;      
  ............................      
  1.写数据库:      
  writeDataBase()  
  {  
                        try      
                        {      
                                                m_RouteDB.Open(CRecordset::dynaset,     "SELECT     *     FROM     tlk_RouteBrdcst");      
                                                m_RouteDB.AddNew();      
                                                m_RouteDB.m_t                                     =     m_nstep;      
                                                m_RouteDB.m_callsign                       =     callsign;      
                                                m_RouteDB.m_comutime                       =     comu_time;      
                                                m_RouteDB.m_endtime                         =     end_time;      
                                                m_RouteDB.Update();      
                                                m_RouteDB.Close();      
                                        }      
                        catch(CDBException*     e)      
                        {      
                                                AfxMessageBox(e->m_strError);      
                                                return;      
                        }      
   
  }  
  问题点数:100、回复次数:9Top

1 楼tatu()回复于 2005-07-04 09:02:09 得分 0

看不出这段代码写的有什么错误,比我写的好,学习  
  btw,你试试写一个表会出错吗?  
  如果这也出错,那可能是access的什么设置不对了  
  如果不出错,可能是多个CRecordSet同时操作同一个表了Top

2 楼laiyiling(陌生人[MVP])回复于 2005-07-04 09:15:19 得分 0

一次只更新一个数据库表Top

3 楼ocean69()回复于 2005-07-04 09:28:03 得分 0

我的写法在操作少量数据(1到2000条以下)或者5个以下的表的时候并不出错误,可是以操作5个以上的表舅会出现被admin锁定的错误。  
  应该时出现了楼上laiyiling(◆陌生人·V2.0◆)大侠所说的错误了,  
  可是为什么呢?我每次操作完后都用m_RouteDB.Close();   关闭了该recordset了阿?Top

4 楼tabby(-_-b .. 内存泄漏)回复于 2005-07-07 00:12:33 得分 0

你是不是自己在程序以外已经手动的打开了ACCESS数据库文件在那儿啊??Top

5 楼ocean69()回复于 2005-07-07 17:27:25 得分 0

我没有在程序外打开ACCESS,  
  每次运行总出现同样的错误。Top

6 楼fly_sky_()回复于 2005-07-09 17:01:42 得分 0

我觉得这样写效率效率不高,每次写都要打开和关闭数据库,在UpDate()前加一句UpdateData(),以下是我的重载OnMove函数内的代码,  
                    if(m_bAddMode)  
  {  
  if(!UpdateData())  
  return   false;  
  TRY  
  {  
  m_pSet->Update();  
  }  
  CATCH(CDBException,e)  
  {  
  AfxMessageBox(e->m_strError);  
  return   false;  
  }  
  END_CATCH  
   
  m_pSet->Requery();  
  UpdateData(false);  
  m_bAddMode=false;  
  return   true;  
  }  
  else  
  {  
  return   CRecordView::OnMove(nIDMoveCommand);  
  }Top

7 楼ocean69()回复于 2005-07-10 22:29:22 得分 0

楼上的代码没有打开和关闭recordset的码,   我的看法是您操作一个recordset应该没问题,可是你同时操作多个recordset的派生类的时候可能会出现和我一样的问题,recordset被锁定,我没试过,若有不同见解望指正。Top

8 楼fly_sky_()回复于 2005-07-12 17:23:17 得分 0

可以的,可以同时操作多个记录集,如果不能同时操作多个记录集的话,很多数据处理工作就不能进行,可以在一个文档中加入多个记录集对象,在视图中加入对应的指针,这样就可以了,没问题,也可在通过定位你的文档,在任何地方(比如在对话框中)打开你的多个记录集Top

9 楼yvhkdragon(剑客)回复于 2005-07-12 21:06:09 得分 0

程序外打开也不会发生错误的,应该不是这个问题.Top

相关问题

  • 回答者有分
  • 回答者有分
  • 回答者,人人有分!
  • 回答者都有分!
  • 怎么给回答者分数?...-_-
  • VB+ACCESS的问题,回答者加分!!
  • 在线等待!先回答者得分!
  • 删除问题回答者都给分
  • 工程硕士——————回答者都有分
  • 一个关于TCP Socket的问题,回答者都有回报

关键词

  • 数据库
  • 代码
  • access
  • routedb
  • 错误
  • 操作
  • callsign
  • crecordset
  • 派生类
  • 打开

得分解答快速导航

  • 帖主:ocean69

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo