在数据库中存储文件名加入数值

kocs2002 2006-03-21 11:48:32
sql server 2000数据库中有一张表,有3个字段,ID int 标识,Title varchar ,Content varchar,我想创建一个文本文件,把文件路径及名称存放在Content字段,文件命名规则为Organ加上ID值,比如一条记录中ID为3,文件名即为Organ3.txt.我写了如下代码:
set rs=server.CreateObject("adodb.recordset")
sql="select * from ""Query-Organ"" where(ID is null)"
rs.open sql,conn,1,3
rs.addnew
rs("Title")=title


stringpath = Server.MapPath("Organ"+rs("ID")+".txt")
rs("Content")=stringpath
rs.update
title为变量,添加了一条记录为什么ID值还是空?存储的文件名总是Organ.txt,望高手帮帮我.
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dy_outline 2006-04-09
  • 打赏
  • 举报
回复
今天试验了一下,确实是会出现Update之后无法取得ID的问题,解决的方法也很简单:
将ID设置为主键即可。在表上点击右键,选择设计表,然后选中ID列,点击菜单中的设为主键。我用的是Sql Server2000.
kocs2002 2006-03-22
  • 打赏
  • 举报
回复
不讨论我的思路,我的思路没问题,本来把数据存到数据库中,但由于后来要添加的内容比较大,超出sql server char类型的范围,才改为放入文本,另外我做的东西的应用比较局限,数据量也不会太大,所以这样存取完全没有问题,但是update放在前面我确实是是试过了但没有效果
jspadmin 2006-03-21
  • 打赏
  • 举报
回复
楼上正确,你的sql取出的id=null,当然("Organ"+rs("ID")+".txt")还是=Organ.txt了。
要再添加完后,rs.update后再取这条记录
sky0120 2006-03-21
  • 打赏
  • 举报
回复
rs.update运行之前ID is null。应该先完成添加再取出刚添加记录的ID。

如下:
……
RS.UPDATE
Set Rs=conn.execute("select @@identity as AID")
DocID=Rs("AID")
stringpath = Server.MapPath("Organ"+DocID+".txt")
dy_outline 2006-03-21
  • 打赏
  • 举报
回复
同意二楼和三楼的看法。
但你的这种思路上似乎有问题:
首先,如果每条记录都对应一个文本文件,则没有必要再在数据库创建一列,直接取出数据库中的ID号后加上“Organ”+rs("ID")+".txt"就可以得到相应的记录了。
其次,正如楼上所说的,在没有进行rs.update()之前,数据库中的ID是不会增长的,你取得了记录当然是Null。
另外,这样的算法在大规模的应用中可能会有问题,如写道库中的记录如果每秒中有几百条或几千条先将数据库Update了,再回头去取最新的一条记录,很可能会出错。前几天在数据库板块看到过取得最新记录的相关讨论,你可以查询一下。
kocs2002 2006-03-21
  • 打赏
  • 举报
回复
我在sql="select * from ""Query-Organ"" where(ID is null)"之前写了rs.update,同样没有效果,如果我把("Organ"+rs("ID")+".txt")换成("Organ"+rs("Title")+".txt")就可以了,所以应该不是rs.update的问题

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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