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

用adoquery更新数据库时的问题

楼主mardatou(要做卓而不凡)2001-09-23 16:58:56 在 C++ Builder / 数据库及相关技术 提问

用adoquery更新数据库时,如果更新一个表,还可以,但如果同时更新两个表,就出现问题.可我明明已经分开更新了.还是没用. 问题点数:20、回复次数:13Top

1 楼goodfood(在天堂和地狱的入口为你疯狂,耶~~)回复于 2001-09-23 17:36:21 得分 0

说得不详细。  
   
  如果你确定你的操作是对的,而又没有安装过patch,  
   
  那就到Inprise网站上去下载BCB关于ado的补丁吧。  
   
   
   
   
   
  Top

2 楼bcboy(编程蜗牛)回复于 2001-09-23 19:30:50 得分 5

更新一般用的是ExecSQL(),你用的是不是Open()。  
  Top

3 楼Wingsun(孙春阳)回复于 2001-09-23 19:49:21 得分 0

对,希望你能详细描述你的问题。Top

4 楼mardatou(要做卓而不凡)回复于 2001-09-23 20:19:12 得分 0

Form1->ADOQuery1->Close();  
  Form1->ADOQuery1->SQL->Clear();  
  Form1->ADOQuery1->SQL->Add("select   one   from   data1   where   one='"+edit1->Text+"'");  
  Form1->ADOQuery1->Open();  
  Form1->ADOQuery1->Edit();  
  Form1->ADOQuery1->FieldValues["one"]=combobox1->Text;  
  Form1->ADOQuery1->Post();  
   
   
  dele();  
  myfuction();  
  oneok();  
  twook();  
   
   
   
  Form1->ADOQuery1->Close();  
  Form1->ADOQuery1->SQL->Clear();  
  Form1->ADOQuery1->SQL->Add("select   firs   from   data2   where   firs='"+edit1->Text+"'");  
  Form1->ADOQuery1->Open();  
  int   findnumber;  
  findnumber=Form1->ADOQuery1->RecordCount;  
  if(findnumber!=0)  
  {  
  Form1->ADOQuery1->Edit();  
  for(int   i=1;i<=findnumber;i++)  
  {  
  Form1->ADOQuery1->FieldValues["firs"]=combobox1->Text;  
  Form1->ADOQuery1->Post();  
  Form1->ADOQuery1->Next();  
  }  
  }  
   
  以上是代码,丑得很.Top

5 楼mardatou(要做卓而不凡)回复于 2001-09-24 08:05:43 得分 0

两个表里的数据是更新过来了,可运行时,会弹出error,显示"要更新的数据行太多,键列信息不足",可我的表里才仅有五条记录.Top

6 楼wilddragon(东瀛倭族自治州州长)回复于 2001-09-24 09:14:36 得分 5

支持一把Top

7 楼wilddragon(东瀛倭族自治州州长)回复于 2001-09-24 10:04:13 得分 0

值得注意Top

8 楼TR@SOE()回复于 2001-09-24 10:25:27 得分 10

这应该是你的表格中的索引或主键出了问题,ADO无法找到要更新的那个数据的位置在哪里。  
   
  Form1->ADOQuery1->Close();  
  Form1->ADOQuery1->SQL->Clear();  
  Form1->ADOQuery1->SQL->Add("select   one   from   data1   where   one='"+edit1->Text+"'");  
  Form1->ADOQuery1->Open();  
  Form1->ADOQuery1->Edit();  
  Form1->ADOQuery1->FieldValues["one"]=combobox1->Text;  
  Form1->ADOQuery1->Post();  
   
   
  以你的例子而言,应该使用一个update语句操作,而不是将记录先SELECT出来后再进行修改。SQL应该是这样的:  
  update   data1   set   (one=:newvalue)   where   (one   =   :oldvalue)  
   
  然后用ParamByName将新的/旧的值传进去。  
   
  Top

9 楼mardatou(要做卓而不凡)回复于 2001-09-24 11:28:30 得分 0

多谢上面的同志,update是可以用,但我上面的方法到底错在什么地方呢?Top

10 楼LuoGD(抢第一楼)回复于 2001-09-24 12:52:08 得分 0

在你的表上添加对字段One和first的索引。Top

11 楼yeqiufeng(叶秋枫)回复于 2001-09-24 13:48:20 得分 0

听副版主的    
   
  没错  
  UpTop

12 楼wilddragon(东瀛倭族自治州州长)回复于 2001-09-24 15:15:21 得分 0

期待答案Top

13 楼TR@SOE()回复于 2001-09-24 20:33:01 得分 0

To   Mardatou:    
   
  一、应该用UPDATE的SQL;  
  二、问题就在于索引不唯一。SQL操作无法定位到唯一的一个记录。  
   
  所以,必须用UPDATE来做,同时也要重新建立索引,特别是唯一性索引,一个表格至少要有一个。Top

相关问题

  • 用adoquery怎样更新sql server数据库中的表
  • 用DataTable更新数据库???
  • adoquery更新数据库的问题
  • 如何用vb更新数据库?
  • 用脚本更新数据库问题
  • 如何用DataGrid更新数据库???
  • 用DataSet更新数据库?100分
  • 用DataSet更新数据库?100分
  • 用DataSet更新数据库的问题
  • ★★★使用AdoHelper更新dataset到数据库

关键词

  • 数据
  • sql
  • adoquery
  • findnumber
  • 更新
  • 索引
  • firs
  • fieldvalues
  • edit
  • 表

得分解答快速导航

  • 帖主:mardatou
  • bcboy
  • wilddragon
  • TR@SOE

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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