MicrosoftADOExt.2.7forDDLadoSecurity'建数据库:PrivateSubForm_Load()DimcatAsADOX.CatalogSetcat=NewADOX.Catalog'在当前目录下建立名为newdata的Access数据库cat.Create("Provider=Micr" />
怎样用VB的代码创建Access数据库
用ADOX:
'菜单“工程”--> "引用"--> Microsoft ADO Ext.2.7 for DDL ado Security
' 建数据库:
Private Sub Form_Load()
Dim cat As ADOX.Catalog
Set cat = New ADOX.Catalog
'在当前目录下建立名为newdata的Access数据库
cat.Create ( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + App.Path & "\newdata.mdb " + "; ")
MsgBox "数据库已经创建成功!"
End Sub
' 建表:
Private Sub Command1_Click()
Dim cn As New ADODB.Connection
cn.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "newdata.mdb;Persist Security Info=False "
cn.Open
cn.Execute "CREATE TABLE [aaa]([学生姓名]Text(20),[年龄]Integer,[成绩]Double) "
cn.Close
End Sub
'删表:
Private Sub Command2_Click()
Dim cn As New ADODB.Connection
cn.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source== " & App.Path & "newdata.mdb;Persist Security Info=False "
cn.Open
cn.Execute "DROP TABLE [aaa] "
cn.Close
End Sub
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Option Explicit
Dim i As Integer
Dim j As Integer
Private Sub Form_Load()
'菜单“工程”--> "引用"--> "Microsoft ActiveX Data Objects 2.7 Library "
'Microsoft ADO Ext.2.7 for DDL ado Security
Dim cat As ADOX.Catalog
Set cat = New ADOX.Catalog
cat.Create ( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\newdata.mdb " + "; ")
MsgBox "数据库已经创建成功!"
Dim tbl As ADOX.Table
Set tbl = New ADOX.Table
tbl.ParentCatalog = cat
https://www.doczj.com/doc/66407893.html, = "MyTable "
'增加一个自动增长的字段
Dim col As ADOX.Column
Set col = New ADOX.Column
col.ParentCatalog = cat
col.Type = ADOX.DataTypeEnum.adInteger ' // 必须先设置字段类型https://www.doczj.com/doc/66407893.html, = "id "
col.Properties( "Jet OLEDB:Allow Zero Length ").Value = False col.Properties( "AutoIncrement ").Value = True
tbl.Columns.Append col, ADOX.DataTypeEnum.adInteger, 0
'增加一个文本字段
Dim col2 As ADOX.Column
Set col2 = New ADOX.Column
col2.ParentCatalog = cat
https://www.doczj.com/doc/66407893.html, = "Description "
col2.Properties( "Jet OLEDB:Allow Zero Length ").Value = False tbl.Columns.Append col2, ADOX.DataTypeEnum.adVarChar, 25
'增加一个货币型字段
Dim col4 As ADOX.Column
Set col4 = New ADOX.Column
col4.ParentCatalog = cat
col4.Type = ADOX.DataTypeEnum.adCurrency
https://www.doczj.com/doc/66407893.html, = "xx "
tbl.Columns.Append col4, ADOX.DataTypeEnum.adCurrency
'增加一个OLE字段
Dim col5 As ADOX.Column
Set col5 = New ADOX.Column
col5.ParentCatalog = cat
col5.Type = ADOX.DataTypeEnum.adLongVarBinary
https://www.doczj.com/doc/66407893.html, = "OLD_FLD "
tbl.Columns.Append col5, ADOX.DataTypeEnum.adLongVarBinary
'增加一个数值型字段
Dim col3 As ADOX.Column
Set col3 = New ADOX.Column
col3.ParentCatalog = cat
col3.Type = ADOX.DataTypeEnum.adDouble
https://www.doczj.com/doc/66407893.html, = "ll "
tbl.Columns.Append col3, ADOX.DataTypeEnum.adDouble
Dim p As ADOX.Property
For Each p In col3.Properties
Debug.Print https://www.doczj.com/doc/66407893.html, & ": " & p.Value & ": " & p.Type & ": " & p.Attributes
Next
'设置主键
tbl.Keys.Append "PrimaryKey ", ADOX.KeyTypeEnum.adKeyPrimary, "id ", " ", " "
cat.Tables.Append tbl
MsgBox "数据库表:" + https://www.doczj.com/doc/66407893.html, + "已经创建成功!"
Set tbl = Nothing
Set cat = Nothing
End Sub
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 本例中我们使用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对象模型中的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
https://www.doczj.com/doc/66407893.html, = "表1"
cat.Tables.Append tb1
2、下面的代码将字段添加到表中,我们以一个单精度字段和一个文本字段为例。
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、较为完整的添加字段的方法,与第二节没什么区别
Dim col1 As New ADOX.Column
Dim col2 As New ADOX.Column
col1.ParentCatalog = cat
https://www.doczj.com/doc/66407893.html, = "成绩"
col1.Type = adSingle
col1.Properties("default").Value = 0
'col1.Attributes = adColNullable
tb1.Columns.Append col1
col2.ParentCatalog = cat
https://www.doczj.com/doc/66407893.html, = "文本"
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 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段代码中添加表和字段的方法较为简练。