作者在 2010-06-11 20:50:56 发布以下内容
本例中我们使用ADOX来创建Access数据库。
Microsoft® ActiveX® Data Objects Extensions for Data Definition Language and Security (ADOX) 是对 ADO 对象和编程模型的扩展。ADOX 包括用于模式创建和修改的对象,以及安全性。由于它是基于对象实现模式操作,所以用户可以编写对各种数据源都能有效运行的代码,而与它们原始语法中的差异无关。
ADOX 是核心 ADO 对象的扩展库。它显露的其他对象可用于创建、修改和删除模式对象,如表格和过程。它还包括安全对象,可用于维护用户和组,以及授予和撤消对象的权限。
要通过开发工具使用 ADOX,需要建立对 ADOX 类型库的引用。对 ADOX 库的说明为“Microsoft ADO Ext. for DDL and Security.”。ADOX 库文件名为“Msadox.dll”,程序 ID (ProgID) 为“ADOX”。有关建立库引用的详细信息,请参阅开发工具的文档。
ADOX 是核心 ADO 对象的扩展库。它显露的其他对象可用于创建、修改和删除模式对象,如表格和过程。它还包括安全对象,可用于维护用户和组,以及授予和撤消对象的权限。
要通过开发工具使用 ADOX,需要建立对 ADOX 类型库的引用。对 ADOX 库的说明为“Microsoft ADO Ext. for DDL and Security.”。ADOX 库文件名为“Msadox.dll”,程序 ID (ProgID) 为“ADOX”。有关建立库引用的详细信息,请参阅开发工具的文档。
使用ADOX对象模型中的Catalog对象来创建数据库,创建Access数据库的方式非常简单,使用的字符串和ADODB.Connection对象的连接字符串是一样的。较为简单的示例如下:
1、创建数据库
'声明Catalog对象
Dim cat As New ADOX.Catalog
'设置创建数据库用到的字符串,和ADODB.Connection对象的连接字符串相同
Dim Workstring As String
Workstring = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "E:\test27.mdb"
'创建数据库
cat.Create Workstring
cat.ActiveConnection = Workstring
'声明Table对象
Dim tb1 As New ADOX.Table
tb1.Name = "表1"
cat.Tables.Append tb1
2、下面的代码将字段添加到表中,我们以一个单精度字段和一个文本字段为例。Dim cat As New ADOX.Catalog
'设置创建数据库用到的字符串,和ADODB.Connection对象的连接字符串相同
Dim Workstring As String
Workstring = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "E:\test27.mdb"
'创建数据库
cat.Create Workstring
cat.ActiveConnection = Workstring
'声明Table对象
Dim tb1 As New ADOX.Table
tb1.Name = "表1"
cat.Tables.Append tb1
tb1.Columns.Append "成绩", adSingle
tb1.Columns("成绩").Properties("default").Value = 0 '字段默认值为0
'要说明的是,设置默认值和充许为空相冲突,所以这句可以和上句互换
'tb1.Columns("成绩").Attributes = adColNullable
tb1.Columns.Append "文本", adVarWChar, 50
tb1.Columns("文本").Properties("default").Value = "5362"
'以这种方式添加文本列的时候不能指定Attributes属性为adColNullable,希望能有人指点下
3、较为完整的添加字段的方法,与第二节没什么区别tb1.Columns("成绩").Properties("default").Value = 0 '字段默认值为0
'要说明的是,设置默认值和充许为空相冲突,所以这句可以和上句互换
'tb1.Columns("成绩").Attributes = adColNullable
tb1.Columns.Append "文本", adVarWChar, 50
tb1.Columns("文本").Properties("default").Value = "5362"
'以这种方式添加文本列的时候不能指定Attributes属性为adColNullable,希望能有人指点下
Dim col1 As New ADOX.Column
Dim col2 As New ADOX.Column
col1.ParentCatalog = cat
col1.Name = "成绩"
col1.Type = adSingle
col1.Properties("default").Value = 0
'col1.Attributes = adColNullable
tb1.Columns.Append col1
col2.ParentCatalog = cat
col2.Name = "文本"
col2.Type = adVarWChar
col2.DefinedSize = 50
col2.Attributes = adColNullable
'col2.Properties("default").Value = "2222"
tb1.Columns.Append col2
'如果先添加列,tb1.Columns.Append col1,而后设置其属性,可以不用col1.ParentCatalog = cat这一句
4、在数据库已经存在的情况下,可以使用SQL语句创建表和字段,仍以添加一个单精度字段和一个文本字段为例,代码如下:Dim col2 As New ADOX.Column
col1.ParentCatalog = cat
col1.Name = "成绩"
col1.Type = adSingle
col1.Properties("default").Value = 0
'col1.Attributes = adColNullable
tb1.Columns.Append col1
col2.ParentCatalog = cat
col2.Name = "文本"
col2.Type = adVarWChar
col2.DefinedSize = 50
col2.Attributes = adColNullable
'col2.Properties("default").Value = "2222"
tb1.Columns.Append col2
'如果先添加列,tb1.Columns.Append col1,而后设置其属性,可以不用col1.ParentCatalog = cat这一句
Dim conn As New ADODB.Connection
Dim Workstring As String
Workstring = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "E:\test.mdb"
conn.Open Workstring
strsql = "CREATE TABLE test9(编号 single default 0,姓名 text (50) not null default XXXX)"
conn.Execute strsql
Set conn = Nothing
相比较而言,第4段代码中添加表和字段的方法较为简练。Dim Workstring As String
Workstring = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & "E:\test.mdb"
conn.Open Workstring
strsql = "CREATE TABLE test9(编号 single default 0,姓名 text (50) not null default XXXX)"
conn.Execute strsql
Set conn = Nothing