知识大全 VB中用ADO对象动态创建数据库和表
Posted 数据库
篇首语:业无高卑志当坚,男儿有求安得闲?本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 VB中用ADO对象动态创建数据库和表相关的知识,希望对你有一定的参考价值。
VB中用ADO对象动态创建数据库和表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
: 问题的提出
在Visual Basic中 常用的数据访问接口有下列三种 数据库访问对象(DAO Data Access Object) 远程数据库对象(RDO Remote Data Object)和ActiveX数据对象(ADO ActiveX Data Object ) 数据库访问技术一直在不断进步 而这三种接口的每一种都分别代表了该技术的不同发展阶段 最新的是ADO 它是比RDO和DAO更加简单 然而更加灵活的对象模型 正因如此 越来越多的人在用VB开发数据库软件时使用ADO作为数据访问接口 在开发过程中 我们通常的使用的方法是 先使用数据库管理系统(例如 Microsoft Access)或VB中的可视化数据管理器建立好数据库和数据表结构 然后在程序中通过使用ADODC数据库控件或引用ADO对象与数据库中的表建立连接 再通过数据库感知控件(例如 文本框 DataGrid等)来进行数据库的各种操作 在这种开发过程中 我们有时需要面对这样一个问题 如何让用户在程序运行过程中动态地建立自己所需的数据库和数据表以提高程序的灵活性呢?在程序运行过程中建立自己所需的数据库和数据表 其本质就是用代码(或者说通过编程)来建立数据库和数据表 众所周知 在Foxpro或ASP编程中 这是很容易的一件事件 那么在VB数据库编程中又是怎样来操作的呢?在VB数据库编程中 如果使用DAO作为数据库访问接口技术 则可以用CreateDatabase结合CreateTableDef方法来实现 目前已有不少书和杂志都讲到了这种方法 本文就不再讲述了 但你如果使用的是最新的数据库访问接口技术ADO 你却发现目前的书和杂志上没有文章讲到如何用代码来建立数据库和数据表的方法 可有时我们非常需要用到这种方法 下面我们就来解决这个问题
: ADO与ADOX
我们先来对ADO 和ADOX进行简单的认识 在VB 中 使用ADO开发数据库应用程序时 我们要引用对象库 Microsoft ActiveX Data Objects Library 这个东西的简称就是ADO 它是VB 数据库最核心的对象群 也是VB数据库开发人员经常所引用的对象库 在VB 中你可以看到它的各种版本 从 版到 版都有 很多人对它已经很熟悉 在此我们不再详细介绍 如果要在程序运行过程中创建数据库和表 我们还要引用对象库 Microsoft ADO Ext For DDL Security 简称为ADOX 其库文件名为是 Msadox dll ADOX是对 ADO 对象和编程模型的扩展 它将 ADO 扩展为包括创建 修改和删除模式对象 如表格和过程 它还包括安全对象 用于维护用户和组 以及授予和撤消对象的权限 ADOX的对象如下表所示
对象 说明
Catalog 包含描述数据源模式目录的集合
Column 表示表 索引或关键字的列
Group 表示在安全数据库内有访问权限的组帐号
Index 表示数据库表中的索引
Key 表示数据库表中的主关键字 外部关键字或唯一关键字
Procedure 表示存储的过程
Table 表示数据库表 包括列 索引和关键字
User 表示在安全数据库内具有访问权限的用户帐号
View 表示记录或虚拟表的过滤集
ADOX常用方法有 Append(包括Columns Groups Indexes Keys Procedures Tables Users Views) Create(创建新的目录) Delete(删除集合中的对象) Refresh(更新集合中的对象)等等 有关 ADOX 的详细信息 请在 中参阅 Microsoft 发布的有关 ADOX说明的 Web 页
: 在原有数据表的基础上产生新的数据表
如果仅仅是在已有的数据表的基础上产生新的数据表 我们只要引用对象库 Microsoft ActiveX Data Objects Library 再利用Select…Into语句就可以了 例如 有一个名为Wage mdb的数据库 数据库中有一个名为 工资表 数据表 该数据表的字段有 编号 姓名 基本工资 津贴 应发工资 扣款 实发工资等 这个表中已经有很多的记录 现在我们把其中的实发工资大于 的记录筛选出来组成一个新表 新表的名称由用户从文本框中输入 新表中我们只要三个字段 它们是 编号 姓名 实发工资 我们用下列程序就可以实现
(事先在窗体中添加一个文本框Text 和一个命令按钮Command )
Dim conn As New ADODB Connection
Dim rs As New ADODB Recordset
Dim mand As New mand
Private Sub Command _Click()
Dim bm As String
Dim sql As String
If Text Text <> Then
bm = Trim(Text Text)
sql= Select 编号 姓名 实发工资 Into + bm + From 工资表 Where 实发工资>
Set mand ActiveConnection = conn
mand CommandText = sql
mand Execute
Else
MsgBox 你必须输入一个名字
End If
Private Sub Form_Load()
Dim str As String
str = App Path
If Right(str ) <> \\ Then
str = str + \\
End If
pstr = Provider=Microsoft Jet OLEDB ;
pstr = pstr & Persist Security Info=False;
pstr = pstr & Data Source= & str & wage mdb
conn Open pstr
rs CursorLocation = adUseClient
rs Open 工资表 conn adOpenKeyset adLockPessimistic
Set DataGrid DataSource = rs
End Sub
当然 我们还可以把程序设计得更好 比如 让用户先在窗口中任意选择所需的字段和一些条件 然后再组合生成一个新表 但无论如何 这种操作只能在从原表的基础上产生一个新表 不能产生一个数据库文件 并且新表和原表放在同一个数据库中
: 建立新的数据库和表
前面讲到的方法有一定的局限性 它不能让用户产生自己所需的数据库文件 即使能产生数据表也只能在原有表的基础上生成 我们现在的目的就是让用户利用ADO对象在程序运行过程中创建数据库和表 就好象他利用Access来建立数据库和表一样 为此 我们应该引用对象库 Microsoft ActiveX Data Objects Library 和 Microsoft ADO Ext For DDL Security
我们不妨用一个实例来说明具体的操作过程和方法 我们的实例要达到目的是 在程序运行过程中建立一个数据库 数据库的名称由用户输入 然后在数据库中建立一个名为 MyTable 的数据表 数据表中有三个字段 它们分别是 编号 (整数型) 姓名 (字符型 宽度为 ) 住址 (字符型 宽度为 ) 接着在数据表中添加一条记录 最后在DataGrid控件中把记录的内容显示出来 并且让用户在DataGrid控件中任意修改 添加记录
首先在VB中新建一个窗体 然后在 工程 菜单中引用对象库 Microsoft ActiveX Data Objects Library 和 Microsoft ADO Ext For DDL Security 接着定义三个窗体级的对象变量和一个窗体级的字符串变量 它们的具体定义是
Dim cat As New ADOX Catalog 不用cat用另外一个名字也可以
Dim conn As New ADODB Connection
Dim rs As New ADODB Recordset
Dim pstr As String 定义该变量是为了后面的书写方便
为了更灵活地创建数据库 我们可以在窗体中加入一个通用对话框 一个DataGrid控件 三个命令按钮 它们的标题分别是 创建数据库和表 查看 更新 通用对话框的作用是给用户输入数据库文件名和决定数据库的存放位置 创建数据库和表 命令按钮对应的代码是
Private Sub Command _Click()
Dim fm As String fm变量用来获取用户输入的文件名
CommonDialog Filter = MDB文件(* mdb)|* mdb|AllFiles(* *)|* *|
CommonDialog FilterIndex =
CommonDialog InitDir = D:\\Jthpaper
CommonDialog Flags =
CommonDialog Action =
If CommonDialog FileName = Then
MsgBox 你必须输入一个文件名 请重新保存一次!
Exit Sub
Else
fm = CommonDialog FileName
End If
pstr = Provider=Microsoft Jet OLEDB ; 不能把这里的 改为
pstr = pstr & Data Source= & fm
cat Create pstr 创建数据库
Dim tbl As New Table
cat ActiveConnection = pstr
tbl Name = MyTable 表的名称
tbl Columns Append 编号 adInteger 表的第一个字段
tbl Columns Append 姓名 adVarWChar 表的第二个字段
tbl Columns Append 住址 adVarWChar 表的第三个字段
cat Tables Append tbl 建立数据表
conn Open pstr
rs CursorLocation = adUseClient
rs Open MyTable conn adOpenKeyset adLockPessimistic
rs AddNew 往表中添加新记录
rs Fields( ) Value =
rs Fields( ) Value = 孙悟空
rs Fields( ) Value = 广州市花果山
rs Update
End Sub
上面程序中有一个需要说明的地方 这就是语句 pstr = Provider=Microsoft Jet OLEDB ; 这个语句表示Microsoft Jet OLEDB驱动程序的版本是 这是目前最新的版本 利用它你可以用VB中的ADO对象访问Access 及其以下版本所建立的数据库 你不能把这里的 改为 否则程序不能正常运行 在VB 中 版本的Microsoft Jet OLEDB驱动程序对应的是Access 数据库 换而言之 用这种方法建立的数据库和表跟用Access 所建立的数据库和表是同一类型的 你只能直接用Access 来打开 虽然你可以用VB 来访问这种数据库和其中的数据表 但你不能用Access 或VB 中的 可视化数据管理器 来直接打开
在程序运行时只要用户单击该命令按钮就可以创建自己所需的数据库 查看 命令按钮对应的代码是
Private Sub Command _Click()
Set DataGrid DataSource = rs
End Sub
更新 命令按钮对应的代码是
Private Sub Command _Click()
rs UpdateBatch
End Sub
我们这个实例只是用来说明问题 在实际应用当中你可以把它进一步改进 例如 你在窗体中再增加一些文本框和组合框 供用户输入或选择数据表的名称 字段的名称 字段的宽度和小数位数 这样 用户就可以自主地决定数据库的所有内容了 程序的灵活性也就大大提高了
: 结束语
cha138/Article/program/net/201311/13882相关参考
对于使用ADO.NET通用接口创建对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用ADO
对于BDE会话期对象来说BDE别名特别重要许多方法都需要传递一个数据库的别名作为参数TSession提供了管理BDE别名的功能 但是作者往往等到要发布程序时才发现你的程序由于找不到别名而无法运行
用VB.Net创建三层的数据库程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
用VB.Net创建一个三层的数据库应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 概论
使用ADO对象连接SQLServer数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 链接代
C#中通过读取配置文件动态创建泛型对象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 背景 我
Assembly的CreateInstance有三个重载第一个参数需要是一个字符串表示的完整的类名第二个参数是一个bool类型如果为true表示对第一个参数不区分大小写 第三个影响执行搜索的方式
知识大全 在DELPHI程序中使用ADO对象存取ODBC数据库
在DELPHI程序中使用ADO对象存取ODBC数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
详细介绍ADO.NET对象数据说明 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 学习ADONE
趣味理解ADO.NET对象模型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库的应用在我们