主题:  虚心请求帮助(关于数据库的问题)

xtbr

职务:普通成员
等级:1
金币:0.0
发贴:20
注册:2003/2/25 14:05:26
#12003/10/11 10:18:34
虚心请求帮助(关于数据库的问题)

昨天在网站后台的会员列表中,突然发现多了几十个空白的。ID序号是自动编号。从478起一直到519为止全是空白。我就在后台管理程序上直接把这些空白删除。后来我自己注册一个会员测试。发现ID序号跳到了520,我删除后。又注册一下,发现ID序号跳到了521。我把mdb数据库文件下载到本地,打开后,想更改ID号,但行不通,ACCESS提示“控件无法编辑,它已自动绑定到自动编号字段"id"
我在数据库里直接添加了一个记录,再删除,再添加时,ID序号又跳过了一个。


为什么记录删除了,可当初的ID序号却一直保留着?521删除了,加上一个记录ID序号成了522,把522这个记录删除了,再加上一个记录时,ID序号并不是522,而是523.

大家帮忙教一下我,怎么才去id序号的顺序恢复回正常。

我从来没有接触过ASP和数据库,一直都做美工的,这个网站是公司先前做网站的留下的。BUG很多,但我又不知道怎么修改。在很用心学了。从没接触过程序。希望大家能帮帮我,指点一下。谢谢!





janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#22003/10/11 10:25:13
这就是自动编号的特性,ID即使删除了也永久保留,你以后会逐渐体会到它的好处的 ;)

如果想重新编号,可按下面的方法做(如果操作没有把握,请先自行备份MDB文件):
到表设计中去,删掉ID字段,然后添加ID字段,并设置为自动编号,主键,保存后,所有编号将全部连续地重排一次。



xtbr

职务:普通成员
等级:1
金币:0.0
发贴:20
注册:2003/2/25 14:05:26
#32003/10/11 10:45:07
真的太谢谢您。按您的方法,我改好了。

初学者真的很感动。



xtbr

职务:普通成员
等级:1
金币:0.0
发贴:20
注册:2003/2/25 14:05:26
#42003/10/11 10:50:29
我再请教一下。数据库里为什么会出现这个问题(突然多了几十个空白地记录)大概是什么原因引起的。



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
注册:2003/11/27 18:07:11
#52003/10/11 10:54:05
有两种可能:
  • 这此记录被删除过
  • 有时候 insert 失败会出现这种情况——试图向表里添加记录,因为程序错误而没有成功,但ID号却被占用了,所以猜测你是在调试时多次 insert 无果而造成的。


  • xtbr

    职务:普通成员
    等级:1
    金币:0.0
    发贴:20
    注册:2003/2/25 14:05:26
    #62003/10/11 11:07:46
    我先前没有进行为任何调试和添加记录,偶然在查看后台会员注册情况时,发现多出这么多空白的记录。接着就直接在后台管理程序上进行删除(如你第一点分析)。

    我不解的是为什么在我没有进行任何动作,却突然多出空白记录

    是否存在会员注册时,多次无效。而产生了空白记录?其实这也像您所分析的第二点.
    如果是这样,是否是程序有BUG,那主要出现在哪个模块。如何去找出并修改(能给我一点思路吗)



    缺缺

    职务:管理员
    等级:8
    金币:41.0
    发贴:9620
    注册:2004/1/14 19:14:47
    #72003/10/11 11:11:09
    问题就是在插入数据的那段代码,你有没有检测数据是否为空,如果为空是否就中断了insert的操作?



    xtbr

    职务:普通成员
    等级:1
    金币:0.0
    发贴:20
    注册:2003/2/25 14:05:26
    #82003/10/11 11:15:25
    我学ASP才四天,做程序真的有点吃力,不知道从哪下手。

    谢谢大家这么热心帮助我。

    我现在去找一下哪里才是插入数据的代码。有疑问再上来请教

    ;) ;)



    janlay

    职务:管理员
    等级:7
    金币:28.0
    发贴:7244
    注册:2003/11/27 18:07:11
    #92003/10/11 11:17:47
    如果程序中有 On Error Resume Next, 把它注释掉,除非对程序有把握,否则不要用这个语句,它会掩盖运行时错误。

    仔细检查输入字段,有没有漏洞,凡是由用户输入的字段,都要考虑非法输入的处理情况(任何有意或无意的)。

    另外,可以在插入记录之前先打印 sql 语句,检查语句有没有问题。



    icerain

    职务:普通成员
    等级:1
    金币:1.0
    发贴:249
    注册:2003/6/13 3:09:56
    #102003/10/14 4:47:22
    我估计80%是程序员的大意。
    上传数据的程序中没有判断数据为空的时候出错提示
    差不多这个程序是不管37二十一就是上传写入数据库~