ADO高手请进!!

jxyhelen1 2003-12-18 03:31:47
现有一个50万条记录的电话号码数据库,如何知道某个电话
号码在记录集中的位置,用VC6.0+ADO.
急急急!!!!!!!!!!!!!!!!!
...全文
21 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxyhelen1 2003-12-22
  • 打赏
  • 举报
回复
索引那个字段有没有标示它自身位置的属性阿,可以通过
记录集提取出来阿???
AkiraChing 2003-12-20
  • 打赏
  • 举报
回复
建议采用 rafaelcn(飞扬) 的方案,
如果没有指定排序,一般以第一列排序,所以你要指定字段名排序,可以按照电话号码这一字段排序。
另外,这么大的数据量,最好使用索引,因为你对电话号码感兴趣且电话号码是不重复的,建议使用唯一索引或主键索引,以增强搜索的效率
rafaelcn 2003-12-20
  • 打赏
  • 举报
回复
在表了的位置是相对的,要看你的排序的字段来定,你要首先要确定自己的排序字段是什么

还有,这些操作还是放在数据库里快,50W 的记录如果你有有效的索引的话,sql server select 一下会比你在程序里判断快N 倍
sunux 2003-12-20
  • 打赏
  • 举报
回复
"long lPos=GetPos(pAdo_recordset,"指定一个电话号码");
返回值为电话号码所在pAdorecordset记录集中的位置
如何实现这个GetPos函数?"

最简单的方法就遍历咯,如果字段不等于就i++, pAdo_recordset->MoveNext()
.....
DebugXP 2003-12-19
  • 打赏
  • 举报
回复
可以用一个字段专门记录数据库位置。
但是很麻烦的,如果遇到删除操作,要重新排列整理他的值。
crystal_heart 2003-12-19
  • 打赏
  • 举报
回复
不知道你ado连接的是什么数据库,如果是access或者sql server的话,数据库中并没有“第几条”的概念,存储数据的容器不是队列,而是集合。
cdwy411 2003-12-18
  • 打赏
  • 举报
回复
Recordset->Seek()
jxyhelen1 2003-12-18
  • 打赏
  • 举报
回复
long lPos=GetPos(pAdo_recordset,"指定一个电话号码");

返回值为电话号码所在pAdorecordset记录集中的位置

如何实现这个GetPos函数?
jxyhelen1 2003-12-18
  • 打赏
  • 举报
回复
楼上我的问题就是确定某个电话号码在数据库中的记录号
就是说是第几条记录!!!!!!!!!!!!
arvid_gs 2003-12-18
  • 打赏
  • 举报
回复
聚组,序列,存储过程结合使用!
bohut 2003-12-18
  • 打赏
  • 举报
回复
建议散列(按照电话号码的最后两位);
我的意思是建100张结构相同的表,在插入记录的时候,根据电话号码的最后两位来判断插入哪张表,这样你的50万条记录就被散列在100张表中了,也就是说每张表大约有5000条记录,这样查询起来的速度就快多了。
表名可以是table01,table02,table03......table99,table00。
sql语句是"select * from 你的表名",(先根据电话号码的最后两位判断要查哪张表)

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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