ADOQuery重复的数据的问题

areasd 2003-07-21 05:08:50
我用ADOQuery->LoadFromFile("filename");从文件中读入了100多个记录。然后把这段记录插入到SQL表中,现我发现该段记录中有重复的数据,一插入重复的数据时会报错。我该如何在程序中把重复的数据滤掉?或如何把SQL表设成是可以容纳重复的数据?
...全文
58 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
areasd 2003-07-22
  • 打赏
  • 举报
回复
我用
try
{
插入一条记录;
}
catch(...)
{
ADOQuery1->Next();
}
在执行程序时,会出现程序无响应的现象。我用的是Form->ShowModal();后的Form,在出现异常后,程序的FORM 会消失,只能看到MainForm.
另:我用的是ADOQuery->LoadFromFile("filename");我想这就不能用SQL语句对ADOQuery中的数据进行操作吧!
jiansee 2003-07-22
  • 打赏
  • 举报
回复
是表里面定义了不可重复相同记录,可以修改表的设计,或者程序这样写:

try
{
插入一条记录;
}
catch(...)
{}

上面的代码放到循环里面,循环直到记录全部插入完毕。
当有某条记录发生重复时数据库引擎报错,这个错误被后面的catch拦截。
记住,程序必须以release方式完全编译,执行的时候就不会报错,结果就是所有重复的记录没有被插入到表中。
jiansee 2003-07-22
  • 打赏
  • 举报
回复
以前用过这个方法把一个库的记录导入另一个库文件,用的就是这个办法来忽略重复记录。
ADOQuery->LoadFromFile("filename")之后配合另一个ADOQuery进行循环写入记录,用的sql语句,没有问题,上面的代码不知是不是有笔误,我认为是这样:

ADOQuery1->LoadFromFile("filename");
ADOQuery1->First();
for (int i = 0; i < ADOQuery1->RecordCount; i++)
{
try
{
ADOQuery1用sql语句将一条记录读出,ADOQuery2调用sql语句把该记录写入目标表;
}
catch(...)
{} //出错的话程序会跳到这里,可以进行错误处理,但你的情况{}空着就行
ADOQuery1->Next();
}
alboy 2003-07-21
  • 打赏
  • 举报
回复
select 字段,count(*) from 表 group by 要判断是否重复的字段 having count(*)>1
上面的语句是判断数据库中有重复记录的语句,你改一下就可以了
runnerrunning 2003-07-21
  • 打赏
  • 举报
回复
另外一个办法就是不管错误,直接保存,然后在onUpdateError好像是这个事件或者onPostError中检查错误行就跳过
runnerrunning 2003-07-21
  • 打赏
  • 举报
回复
select distinct field1,fields....from table1 where.....
也是可以去掉重复行的
runnerrunning 2003-07-21
  • 打赏
  • 举报
回复
select distinct field1,fields....from table1 where.....
也是可以去掉重复行的
lvjack 2003-07-21
  • 打赏
  • 举报
回复
将SQL表的unique限制去掉,即允许重复数据
yingyys 2003-07-21
  • 打赏
  • 举报
回复
你可以一条一条往数据库插入数据,插入以前先查询一下是否有重复

如果让表有重复的数据,可以不设主键,但这样不推荐或者增加一个字段比如自增的

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧