日期:2014-05-16  浏览次数:20874 次

提问,关于数据库初始化的问题!
我要做一个ASP的数据库初始化文件,这是老师要求我们做得课程实践。老师使用了一个测试代码书写规范的一个软件,它提出来的要求是:

成功返回的页面HTML应该是:
<html><body>
<div id='result' style='display:none'>0</div>
成功
</body></html>

失败:返回的页面HTML应该是:
<html><body>
<div id='result' style='display:none'>1</div>
这里是错误信息,可根据你的情况输出
</body></html>



以下是我创建的名为initialDataBase的一个asp文件,我只是写了一部分打开我的数据库的操作,我并不知道提出来的要求要如何满足。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open ".\aasp.mdb"
%>
</body>
</html>




之后我的浏览器上出现了错误:没有找到id='result'的结果输出对象
------解决方案--------------------
数据库初始化是由数据库完成的!列用默认值你插入记录不插入该列自动使用默认值!只要你能读到该列的值就表示成功!现在教学还教ASP!
------解决方案--------------------
参考:
思路:
方法一:通过ADO 或者系统表找到所有的表名,然后通过组织 JET SQL 的 DELETE FROM [TABLENAME] 语句来删除所有表中的数据;
清空数据以后用 ADO 获取系统的自动编号字段,判断其是否为自动增加、长整字段,然后再组织 JET SQL 的 DDL 语句来初始化自动编号;
所有数据初始化结束后还要压缩修复数据库。

方法二:如果可能,在创建上述数据库后就应该立即复制一份全新的备份,这样就不用事后编程来进行初始化了。

方法三:如果是纯 ACCESS 环境可以用 TransferDatabase 的一个参数 StructureOnly 来导入结构本身。但是上述方法 VB+MDB ASP+MDB .NET+MDB 环境不适用


上述思路涉及到的知识点本站文章都已经论述过了。

    只用ado列出所有的表《ADO/DAO/ADO.NET》
    http://access911.net/index.asp?u1=a&u2=72FAB71E14DC

    ado如何取得表的所有字段信息?《VBA》
    http://access911.net/index.asp?u1=a&u2=74FAB11E10DC

    《查询》如何定义自动编号字段的初始值和步进值?
    http://access911.net/index.asp?u1=a&u2=71FAB01E13DC

    如何使用 ADO 來压缩或修复 MS Access 文件?(jro的使用)《其他》
    http://access911.net/index.asp?u1=a&u2=71FAB71E


这里列出网友“wangtiecheng(/+〆=ろ)”提供的部分代码:
'在模块中创建公共函数,执行即可。
'用ADO
Public Sub DeleteAllData()
    Dim strSQL As String
    Dim Cnn As New ADODB.Connection
    Dim Rst As New ADODB.Recordset
    
    Set Cnn = CurrentProject.Connection
    
    strSQL = "SELECT Name FROM MSysObjects WHERE Flags=0 AND Type=1"
    Rst.Open strSQL, Cnn, adOpenKeyset, adLockOptimistic
    If Not Rst.EOF Then
        Rst.MoveFirst
        Do While Not Rst.EOF
            strSQL = "delete * from " & Rst!Name
            Cnn.Execute strSQL
           &