尽管我们可以通过设计器来创建数据库, 但是我们也可以在asp的代码中创建数据库,这里我们就一起来看一下如何在asp中创建数据库.
在ASP中创建数据库,我们需要用到ADOX(Microsoft ADO Extensions for DDL and Security), 这个ADO的扩展可以帮助我们创建和修改数据库结构信息, 也包括数据库对象的安全策略. 它随着ADO 2.1 出现, 所以它能够在大多数的Windows平台上工作. 您可以到MS的官方网站去获取最新的ADO版本,当然,里边包括了ADOX.
创建数据库
在我们开始代码编写之前,确定IIS所对应的帐号IUSER_[MachineName](MachineName:一般是你的计算机名) 拥有对您要创建数据库的目录有写入权限。你也可以打开要保存数据库文件的目录的属性对话框,找到安全选项,添加上述用户的写入权限。
为了顺利创建数据库,我们首先需要创建一个空的数据库对象,然后我们才能创建一个新表和定义表的各列。这里有个重要的一点儿就是说,我们创建表的时候,必须在创建完数据库后关闭数据连接。否则我们将没有办法创建数据库和定义数据列。这就是为什么,我会在接下来创建两个方法:CreateAccessDB(创建数据库), CreateAccessTB(创建数据表),变量DBName用来定义要添加数据库的名字,phyPath用来定义存放数据库文件的路径。下边我们来看代码:
这段代码包含了一个adovbs.inc文件,这是个非常有用的文件,它定义了ADO和ADOX中用到的所有数值型变量,你可以在代码中找到该文件,也可以去你自己电脑上:C:\Program Files\Common Files\System\ado下找到。如果需要在你的页面中间引用,需要复制到网站自己的目录下边。
下边是创建数据库的代码:
数据库创建完了,接下来该表了,否则我们要一个没有表的数据库是毫无意义的。下边是创建表的代码:
然后,可以在需要的地方调用:
在ASP中创建数据库,我们需要用到ADOX(Microsoft ADO Extensions for DDL and Security), 这个ADO的扩展可以帮助我们创建和修改数据库结构信息, 也包括数据库对象的安全策略. 它随着ADO 2.1 出现, 所以它能够在大多数的Windows平台上工作. 您可以到MS的官方网站去获取最新的ADO版本,当然,里边包括了ADOX.
创建数据库
在我们开始代码编写之前,确定IIS所对应的帐号IUSER_[MachineName](MachineName:一般是你的计算机名) 拥有对您要创建数据库的目录有写入权限。你也可以打开要保存数据库文件的目录的属性对话框,找到安全选项,添加上述用户的写入权限。
为了顺利创建数据库,我们首先需要创建一个空的数据库对象,然后我们才能创建一个新表和定义表的各列。这里有个重要的一点儿就是说,我们创建表的时候,必须在创建完数据库后关闭数据连接。否则我们将没有办法创建数据库和定义数据列。这就是为什么,我会在接下来创建两个方法:CreateAccessDB(创建数据库), CreateAccessTB(创建数据表),变量DBName用来定义要添加数据库的名字,phyPath用来定义存放数据库文件的路径。下边我们来看代码:
1<!--#include virtual="/Includes/adovbs.inc"-->
2<%
3 Dim DBName,phyPath
4 DBName= "DB.mdb"
5 phyPath=Server.Mapath(DBName)
6 DTName="Contacts"
2<%
3 Dim DBName,phyPath
4 DBName= "DB.mdb"
5 phyPath=Server.Mapath(DBName)
6 DTName="Contacts"
这段代码包含了一个adovbs.inc文件,这是个非常有用的文件,它定义了ADO和ADOX中用到的所有数值型变量,你可以在代码中找到该文件,也可以去你自己电脑上:C:\Program Files\Common Files\System\ado下找到。如果需要在你的页面中间引用,需要复制到网站自己的目录下边。
下边是创建数据库的代码:
1Sub CreateAccessDB(DBToCreate)
2 Dim catNewDB ' As ADOX.Catalog
3 Set catNewDB = Server.CreateObject("ADOX.Catalog")
4 catNewDB.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
5 "Data Source=" & Server.Mapath(DBToCreate) & _
6 ";Jet OLEDB:Engine Type=5;"
7 ' Engine Type=5 = Access 2000 Database
8 ' Engine Type=4 = Access 97 Database
9 Set catNewDB = Nothing
10 End Sub
2 Dim catNewDB ' As ADOX.Catalog
3 Set catNewDB = Server.CreateObject("ADOX.Catalog")
4 catNewDB.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
5 "Data Source=" & Server.Mapath(DBToCreate) & _
6 ";Jet OLEDB:Engine Type=5;"
7 ' Engine Type=5 = Access 2000 Database
8 ' Engine Type=4 = Access 97 Database
9 Set catNewDB = Nothing
10 End Sub
数据库创建完了,接下来该表了,否则我们要一个没有表的数据库是毫无意义的。下边是创建表的代码:
1 Sub CreateAccessTB(DBToCreate)
2 Dim catDB ' As ADOX.Catalog
3 Set catDB = Server.CreateObject("ADOX.Catalog")
4 ' Open the catalog
5 catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
6 "Data Source=" & Server.Mapath(DBToCreate)
7 Dim tblNew ' As ADOX.Table
8 Set tblNew = Server.CreateObject("ADOX.Table")
9 tblNew.Name = TBName
10 ' First Create an Autonumber column, called ID.
11 ' This is just for demonstration purposes.
12 ' You could have done this below with all the other columns as well
13 Dim col ' As ADOX.Column
14 Set col = Server.CreateObject("ADOX.Column")
15 With col
16 ParentCatalog = catDB
17 .Type = adInteger
18 .Name = "ID"
19 .Properties("Autoincrement") = True
20 End With
21 ' Now add the rest of the columns
22 With tblNew
23 ' Create fields and append them to the
24 ' Columns collection of the new Table object.
25 With .Columns
26 .Append "NumberColumn", adInteger
27 .Append "FirstName", adVarWChar
28 .Append "LastName", adVarWChar
29 .Append "Phone", adVarWChar
30 .Append "Notes", adLongVarWChar
31 End With
32
33 Dim adColNullable ' Is not defined in adovbs.inc,
34 ' so you need to define it here.
35 ' The other option is adColFixed with a value of 1
36 adColNullable = 2
37 With .Columns("FirstName")
38 .Attributes = adColNullable
39 End With
40 End With
41 ' Add the new Table to the Tables collection of the database.
42 catDB.Tables.Append tblNew
43 Set col = Nothing
44 Set tblNew = Nothing
45 Set catDB = Nothing
46 End Sub
2 Dim catDB ' As ADOX.Catalog
3 Set catDB = Server.CreateObject("ADOX.Catalog")
4 ' Open the catalog
5 catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
6 "Data Source=" & Server.Mapath(DBToCreate)
7 Dim tblNew ' As ADOX.Table
8 Set tblNew = Server.CreateObject("ADOX.Table")
9 tblNew.Name = TBName
10 ' First Create an Autonumber column, called ID.
11 ' This is just for demonstration purposes.
12 ' You could have done this below with all the other columns as well
13 Dim col ' As ADOX.Column
14 Set col = Server.CreateObject("ADOX.Column")
15 With col
16 ParentCatalog = catDB
17 .Type = adInteger
18 .Name = "ID"
19 .Properties("Autoincrement") = True
20 End With
21 ' Now add the rest of the columns
22 With tblNew
23 ' Create fields and append them to the
24 ' Columns collection of the new Table object.
25 With .Columns
26 .Append "NumberColumn", adInteger
27 .Append "FirstName", adVarWChar
28 .Append "LastName", adVarWChar
29 .Append "Phone", adVarWChar
30 .Append "Notes", adLongVarWChar
31 End With
32
33 Dim adColNullable ' Is not defined in adovbs.inc,
34 ' so you need to define it here.
35 ' The other option is adColFixed with a value of 1
36 adColNullable = 2
37 With .Columns("FirstName")
38 .Attributes = adColNullable
39 End With
40 End With
41 ' Add the new Table to the Tables collection of the database.
42 catDB.Tables.Append tblNew
43 Set col = Nothing
44 Set tblNew = Nothing
45 Set catDB = Nothing
46 End Sub
然后,可以在需要的地方调用:
1' First call the Create Database method
2 CreateAccessDB DBName
3
4 ' Then add a table and columns to this database
5 CreateAccessTB DBName
6
2 CreateAccessDB DBName
3
4 ' Then add a table and columns to this database
5 CreateAccessTB DBName
6