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

关于ADO操作数据表的修改

楼主icegirl914(冰儿)2005-06-06 15:14:09 在 VC/MFC / 数据库 提问

我现在想对一个表数据进行修改,我的界面上有一个Grid控件,   里面总共有16*128个数据,我现在想保存Grid中的数据,用以下语句操作:  
   
  for   (int   i   =   1;   i   <   m_GridCtrl.GetRowCount();   i++)  
  {  
          for   (int   j   =   1;   j   <   m_GridCtrl.GetColumnCount();   j++)  
          {  
  strTemp   =   m_GridCtrl.GetItemText(i,   j);  
  strTemp.Remove('   ');  
  if   (   bFlag   )  
  {  
          ptrRecordset->AddNew();  
          ptrRecordset->Fields->GetItem(_variant_t("ZID"))->Value   =   short((i   -   1)   *   16   +   (j   -   1));  
          ptrRecordset->Fields->GetItem(_variant_t("TYPE"))->Value   =   _bstr_t(strTemp);  
          ptrRecordset->Update();  
  }  
  else  
  {  
          ptrRecordset->Fields->GetItem(_variant_t("ZID"))->Value   =   short((i   -   1)   *   16   +   (j   -   1));  
          ptrRecordset->Fields->GetItem(_variant_t("TYPE"))->Value   =   _bstr_t(strTemp);  
          ptrRecordset->Update();  
          ptrRecordset->MoveNext();  
  }  
            }  
  }  
   
  但是发现在修改状态的时候速度很慢,要等好几秒,可能是我写的方法不对,所以想请教一下,有什么简单快速的方法??? 问题点数:20、回复次数:6Top

1 楼bohut(●伯虎● )回复于 2005-06-06 15:21:14 得分 0

可以将字段的值先取出,然后拼成sql语句,一次执行insert语句Top

2 楼miladuo(辞职ing)回复于 2005-06-06 15:38:49 得分 0

楼上说的有道理,用SQL语句。Top

3 楼icegirl914(冰儿)回复于 2005-06-06 15:51:27 得分 0

if   (   bFlag   )  
          strSql.Format("INSERT   INTO   YCTRANSMIT0(ZID,   TYPE)   VALUES(%d,   '%s')   ",(i-1)*16+(j-1),    
          strTemp);  
  else  
          strSql.Format("UPDATE   YCTRANSMIT0   SET   TYPE   =   '%s'   WHERE   ZID   =   %d   ",strTemp,(i-1)*16+  
          (j-1));  
   
  ptrRecordset->Open((_bstr_t)strSql,   theApp.m_pConnection.GetInterfacePtr(),  
          adOpenDynamic,   adLockOptimistic,   adCmdText);  
   
  我试了这个,但是Open语句出错了,没找到原因在那里  
  Top

4 楼bohut(●伯虎● )回复于 2005-06-06 16:00:06 得分 10

try  
  catchTop

5 楼junhuang09()回复于 2005-06-06 16:01:29 得分 10

把  
  ptrRecordset->Open((_bstr_t)strSql,   theApp.m_pConnection.GetInterfacePtr(),  
          adOpenDynamic,   adLockOptimistic,   adCmdText);  
   
  换成  
  m_pConnection.Execute(_bstr_t(strSql),   NULL,   adOptionUnspecified);  
   
  再试试看Top

6 楼bohut(●伯虎● )回复于 2005-06-06 16:09:08 得分 0

ptrRecordset->Open((LPTSTR)sql.GetBuffer(255),_variant_t((IDispatch   *)     (theApp.m_pConnection),true),  
            adOpenDynamic,adLockPessimistic,adCmdText);Top

相关问题

  • ADOQuery数据表修改操作的出错问题
  • 简单ASP ADO数据表操作问题。请教
  • 数据表操作问题
  • 数据表操作问题
  • 利用ADO操作SYSBASE数据库,数据表指针上移时出错?
  • ADO枚举数据表
  • 很急的!C#操作DBF数据表!
  • ado中如何创建数据表?
  • VFP中,怎样动态修改数据表的字段名称?
  • 又一个愚蠢问题!数据表修改。

关键词

  • 语句
  • 修改
  • 数据
  • ptrrecordset
  • zid
  • getitem
  • pconnection
  • adopendynamic
  • adcmdtext
  • theapp

得分解答快速导航

  • 帖主:icegirl914
  • bohut
  • junhuang09

相关链接

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

广告也精彩

反馈

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