电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> Asp>>如何将数据库按时间分割成单独数据库:

如何将数据库按时间分割成单独数据库

来源:www.cncfan.com | 2006-9-3 | (有3494人读过)

以下只针对ACCESS数据库,因为我暂时只会这个,呵呵。

我的体会:当数据库越来越大,服务器访问的负担也越来越大,总担心哪一天数据库坏掉;也担心数据库备份实在是不好解决的事。

如果能将数据库按天或按周或按月来记录就最好不过了。

第一步,数据库链接文件的设想:

数据库文件比如按时间来分为 200601.mdb 200602.mdb 200603.mdb,分别对应2006年一月,二月,三月的数据。

数据库链接文件,如conn.asp 里;当然,conn.asp直接要访问数据库,但要区分时,必需是conn.asp来分区使用,比如<!--#include file=conn.asp?m=200601-->,(m定义为月份变量)显然这是不可能的,因为include 语句不允许其file值为带有参数。

那么在conn.asp里,我们使用判断当前月份来选择数据库?

判断开始:

conn.asp:(假设数据库目录为data)

dim m
m=year(now)&month(now)
set conn=server.createobject("ADODB.CONNECTION")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("data/"&m&".asp")
conn.open connstr

这样确实实现了使用判断当前月份来选择数据库地址的效果。但当服务器的时间不准确时,就会判断失败。我们暂时假设服务器时间正确。

第二步,程序的调用方法的设想:

假设当前为2006年3月,a.asp 要读取数据库:
假设要读的数据库表为news,项有:id,newsname,newshits,newsbody,newsdate

<!--#include file=conn.asp-->

这时问题就来了,

set rs=Server.createObject("adodb.recordset")
rs.open ("select * from news order by id desc"),conn,1,1

当我们使用rs.open打开数据库后,系统通过第一步的判断,却仅仅读出了3月的数据。那第1月和2月的数据又如何读出呢?

回头再来解决:使用判断,按月份来分割数据库

独立建立数据库 allmonth
表假设为allmonth

当第一次使用系统时,先建立数据库200601.mdb

conn.asp中开始判断:

上一个月的数据库是否存在:

nowmonth = month(now)
'使nowmonth 值为当前月
if nowmonth = 1 then
'判断当前月是否为1月
upmdbname = (int(year(now))-1)&"12"
'如果当前月为1月,那么上一个月就成了去年12月
else
upmdbname = (int(year(now))-1)&"12"
end if

根据判断结果,将数据库名字写入allmonth数据库里的allmonth表里

假设是2006年1月份开始的数据记录。又假设现在为3月份,这样conn.asp已经向allmonth数据库里输入了
ID 1 200601
ID 2 200602
ID 3 200603

这样,我们就可以记录所有每月的数据库名了。


upmdbname = year(now)&(int(month(now))-1)
'当前月减去1,得到上一个月的数据库名upmdbname

else


upmonth = month(now)
upmdbname = year(now)&month(now)

Set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.CopyFile Server.MapPath("data\"&JyDownMDBname&".asp"),Server.MapPath("data_backup\"&JyDownMDBnameNew&".asp")
JyDownMsg="成功:已经成功备份数据库("&JyDownMDBnameNew&".asp)!"
Set fs=nothing

好了,我们再回到第二步的问题当我们使用rs.open打开数据库后,系统通过第一步的判断,却仅仅读出了3月的数据。那第1月和2月的数据又如何读出呢?

我只能作到这里了,现在多数据库记录的列表,删除,添加,修改等功能又如何实现?

期盼高手能解答JASON疑问,非常感谢。如果你知道,请直接回复我的BLOG,JASON非常感谢!

那亲爱的读者,
Asp热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号