数据库访问和组件技术相关概念(ADO、ActiveX、DLL、ODBC等)详解

简介: 数据库访问和组件技术相关概念(ADO、ActiveX、DLL、ODBC等)详解

背景

   最近又再重新学习vb,老师说过无论学习什么知识一定不能独立的学习,学习编程语言也是一样,把两种或者三种语言放到一起进行比较,通过比较每种语言的语法和结构,可以更好地理解它们之间的异同。这有助于扩展编程思维和理解编程范式的多样性,最重要的是在比较的过程中,发挥创造力把不同看成相同,学习就会事半功倍。今天主要介绍几个数据库访问和组件技术相关的概念。

   我们在vb中接触最多的就是组件和控件,控件一般是指ActiveX控件,组件主要指ActiveX动态链接库和ActiveX.exe。组件和控件应用非常广泛,提高了开发效率。vb下面有两套数据存储模型,一个是DAO(早期模型,渐渐淘汰了),一个是ADO,采用的是ActiveX技术,采用二进制标准,具有跨平台的性质,下面就先从ADO开始进行一下介绍:


概念

ADO

   ADO(ActiveX Data Objects)是一组用于访问和处理数据的组件和对象模型。它是Microsoft提供的一种数据访问技术,用于在应用程序中连接到数据库、执行查询、检索和更新数据等操作。

ADO提供了一种统一的编程接口,使开发人员能够以一致的方式与不同类型的数据源进行交互,包括关系型数据库(如SQL Server、Oracle、MySQL等)、文本文件、Excel表格等。


核心组件

1.Connection对象:用于建立与数据源的连接,并管理连接的打开和关闭。 在数据库应用里操作数据源都必须通过该对象,这是数据交换的环境。Connection对象代表了同数据源的一个会话,在客户/服务器模型里,这个会话相当于同服务器的一次网络连接。

2.Command对象:用于执行SQL语句或存储过程,并处理查询结果。是一个对数据源执行命令的定义,使用该对象可以查询数据库并返回一个Recordset对象,可以执行一个批量的数据操作,可以操作数据库的结构。

3.Recordset对象:用于表示从数据源中检索的结果集,可以对结果集进行浏览、修改和更新。

代码展示

1.引入ADO库:在VB项目中,你需要引入ADO库,以便使用ADO相关的组件和对象。可以通过在项目中添加对"Microsoft ActiveX Data Objects"的引用来实现。

2.创建连接对象:使用ADO的Connection对象来建立与数据库的连接。可以指定数据库的连接字符串,其中包括数据库的类型、位置、用户名、密码等信息。

Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=SQLOLEDB;Data Source=myServerAddress;Initial Catalog=myDatabase;User ID=sa;Password=123456;"
conn.Open

3.执行查询语句:使用ADO的Command对象来执行数据库查询语句。你可以编写SQL语句或调用存储过程来查询和操作数据库。

Dim cmd As New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT * FROM Students"
Dim rs As ADODB.Recordset
Set rs = cmd.Execute

4.处理查询结果:查询结果会返回一个Recordset对象,可以使用它来遍历和操作查询结果集。

While Not rs.EOF
    ' 处理每一条记录
    MsgBox rs("StudentName").Value
    rs.MoveNext
Wend

5.关闭连接:在完成数据库操作后,关闭连接,释放资源。

rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing

   通过以上步骤,可以使用ADO在VB中连接数据库、执行查询语句,并处理查询结果.


概念中的概念

   现在回看一下ADO概念中的几个名词,分别进一步介绍


ActiveX

   ADO中的A就是指ActiveX ,那这又是什么呢?


   ActiveX是"Active eXtension"的缩写,它是一种基于COM(Component Object Model)的技术。ActiveX是Microsoft提出的一种软件组件技术,用于创建可重用的软件组件,可以在不同的应用程序和平台之间进行交互和共享。


   ActiveX技术的目标是实现跨平台、跨语言和跨网络的组件通信。它提供了一种标准的组件模型,使开发人员可以创建和使用可重用的软件组件。这些组件可以以二进制形式存在,被其他应用程序调用和使用,从而实现代码的重用和模块化。


   ActiveX技术主要应用于Windows平台,并且在Web浏览器中也有广泛的应用。在Web浏览器中,ActiveX控件可以嵌入到网页中,实现丰富的交互和功能扩展,但需要用户的授权和浏览器的支持。


   说到这里插入一点“历史”,关于静态库(Static Library)、动态链接库(Dynamic Link Library,DLL)和ActiveX。这三种是常见的代码共享方式,使得多个应用程序可以共享同一份代码,减少代码冗余和提高代码复用性。

   静态库是最早出现的,DLL是在静态库的基础上发展而来,ActiveX是基于COM和OLE技术的一种特殊的DLL。它们的演化过程是为了解决代码共享和软件更新的需求,并提供更灵活和易于维护的方式。


三者不同点见下表

特点 静态库 DLL ActiveX
文件类型 .lib .dll .dll
链接方式 静态链接 动态链接 动态链接
内存占用 静态库的代码被复制到可执行文件中 共享代码段,多个进程共享同一份代码 共享代码段,多个进程共享同一份代码
可执行文件大小 较大 较小 较小
更新方式 需要重新编译整个程序 只需替换DLL文件 只需替换DLL文件
运行时依赖 不依赖外部库文件 需要依赖DLL文件 需要依赖DLL文件
跨平台性 不具备 具备 具备
使用场景 静态链接时,适用于小型项目 动态链接时,适用于大型项目 适用于跨平台和分布式系统


4992a24eae98413085fb78cab87443e8.png

363c476a120c4f69a17a934dca748906.png

   总结起来,ActiveX是一种基于COM的技术,用于创建可重用的软件组件,可以在不同的应用程序和平台之间进行交互和共享。它提供了一种标准的组件模型,用于实现代码的重用和功能的扩展。


组件

   指的是可重用的软件模块,可以被其他程序调用和使用。

组件在VB中通常以类库(Library)的形式存在,可以包含多个类、接口和函数等。ADO提供了一组组件,用于在VB应用程序中进行数据库访问和数据处理。


   在上面给的代码中,ADODB.Connection和ADODB.Recordset就是ADO组件的一部分。通过创建这些组件的实例,并调用相应的方法和属性,可以实现与数据库的交互和数据操作。


对象模型

   指的是一组对象的层次结构,这些对象代表了不同的数据库相关组件和功能。这些对象之间存在关联和依赖关系,通过调用对象的方法和属性,可以实现对数据库的连接、查询、更新等操作。


   上面提到的 Connection、 Command、 Recordset以及 Field(字段对象:表示记录集中的一个字段,可以获取和设置字段的值 )都是ADO的对象模型中的核心对象,除了这些核心对象,还有其他辅助对象和集合对象,用于支持数据访问和处理的各种功能。


   对象模型提供了一种结构化的方式来组织和管理这些功能,使得在VB中进行数据库编程更加方便和灵活。开发人员可以根据需要创建和配置这些对象,以实现特定的数据库操作。


ADO与ODBC的关系

   ODBC(Open Database Connectivity)是一种开放的标准API,用于在应用程序和数据库之间建立连接和进行数据交互。它提供了一组函数和驱动程序,使应用程序能够通过统一的方式访问不同类型的数据库。ODBC允许应用程序使用SQL语句来查询和操作数据库,并提供了一种独立于数据库的编程接口。


   ADO是建立在ODBC之上的一种高级数据访问技术。ADO提供了一个对象模型,使开发人员可以以更简洁和直观的方式与数据库进行交互。ADO可以使用ODBC驱动程序来连接和访问数据库,通过ODBC提供的功能,ADO可以与各种不同的数据库进行通信。

在ADO中,可以使用ADO的Connection对象来建立与数据库的连接,而连接字符串中可以指定使用的ODBC数据源。通过这种方式,ADO利用了ODBC的功能来实现与不同数据库的通用数据访问。


   需要注意的是,尽管ADO可以使用ODBC来连接数据库,但它也支持其他的数据访问方式,如使用本地驱动程序、OLE DB提供程序等。这使得ADO具有更大的灵活性和可扩展性,可以适应不同的数据访问需求。


总结

   本文介绍了数据库访问和组件技术相关的概念,从ADO作为起点展开,介绍了ADO作为一组用于访问和处理数据的组件和对象模型,在VB中的应用。接着介绍了ActiveX的前身静态库和动态链接库(DLL),它们都是常见的代码复用和模块化的方式。同时,介绍了组件和对象模型的概念,ActiveX组件以DLL的形式存在,通过使用ActiveX技术,组件可以更加灵活地被调用和使用,实现跨平台、跨语言和跨网络的组件通信。最后,提到了ADO与ODBC的关系。通过介绍ActiveX、组件、对象模型、静态库、动态链接库(DLL)以及ADO与ODBC的关系,展示了数据库访问和组件技术的发展和应用。这些概念和技术为开发人员提供了强大的工具和平台,用于构建可重用、灵活和高效的软件系统。


相关文章
|
6天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
31 15
|
7天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
28 11
|
1月前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
115 61
|
28天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
55 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
41 1
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
18 3
|
3天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
22 2
|
16天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
115 15