自从我学会了用VB程序自动创建Access数据库后,我放弃了事先创建,喜欢由VB程序自动创建。我觉得自动创建一个数据库有如下几点好处:
首先,安装程序丢下了这个数据库尾巴。事先创建好的数据库,在安装程序时一定要带着这个数据库,并将其安装到用户的电脑上,就象一个尾巴一个,走到哪里就带到哪里。感觉是个负担。如果由VB程序自动来创建所需的数据库,就不需要安装程序老是带着这个数据库了。因为这个数据库是由程序自己按照要求随时创建的。
其次,用户数据更加安全。由于事先创建的数据库是由安装程序带着走的,并由其安装到用户的电脑上,如果用户需要重新安装的话,通常会先缷载,而在缷载时,这个可能保存了用户很多重要数据的数据库也会被删除,重新安装后由安装带着的那个原来数据库被重新安装到了用户电脑上,先前的数据可能完全被丢失了。由VB程序自动创建的数据库就不会发生这种事情,缷载时也不会被删除,重新安装应用程序也不会重新来创建这个数据库,这只要在程序中判断一下即可实现。用户的数据不会因缷载重新安装而丢失。
第三,方便程序升级。程序在用户手中使用后,通常会反馈一些很有价值的意见和建议,这就需要对原程序进行升级。有时就会对原数据库结构进行一些修改,如果是事先创建就非常麻烦了,采用编程自动创建的就比较方便。
VB6编程创建一个Access数据库需要在工程中先引用Microsoft ADD Ext. 2.8 for DLL and Security,然后定义两个变量,比如:
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
现在可以用下面这句代码来创建一个数据库文件(比如文件名为abc.mdb,保存在D盘根目录下):
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\abc.mdb"
用下面这段代码可以创建一个表其及字段:
With tbl
.Name="MyContacts" '表名
.Set .ParentCatalog=cat
.Columns.Append "ContactId",adInteger '创建一个字段名为ContactId的字段
.Columns("ContactId").Properties("AutoIncrement")=True '设置字段ContactId的数据类型为自动编号
.Keys.Append "kCid",adKeyPrimary,"ContactId" '设置字段ContactId为主键
.Columns.Append "CustomerID",adVarWChar '创建一个字段名为CustomerID的字符型字段
.Columns("CustomerID").Properties("Default")="DDDD" '设置字段CustomerID的默认值为"DDDD"
.Indeses.Append "cID","CustomerID" '对字段CustomerID建一个索引
.Columns.Append "FirstName",adVarWChar
.Indexes.Append "Fir","FirstName"
.Kesy.Append "kFir",adKeyUnique,"FirstName" '加上这句,即完成建立一个无重复的索引。
End With
cat.Tables.Append tbl
至此,VB6完成了自动创建数据库。