ado

 ADO是基于OLE DB的数据访问技术。它不直接与数据交互,而是把这个任务交给了OLE DB,这么做带来了相当好的可扩展性和适应性。它提供了编程语言和统一数据访问方式;它允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心数据库的连接。由于ADO是基于COM实现的,所以基本上任何语言都可以使用这种数据访问技术,VBA也不例外。

一、ADO对象模型

  ADO对象库中主要有9个对象,即:Connection、Command、Recordset、Record、Field、Error、Property、Parameter和Stream。呈现的形式基本是5大可以独立创建的基本对象,4大对象集合,如下图所示。


这9个对象中以Connection、Command、Recordset是最为常用的,很多情况下只需要这三个对象即可完成数据的读取和操作,对于一些很简单的应用,甚至使用它们中的任何一个就可以独立完成任务。下面是各个对象/集合的简略说明:

Connection:代表与数据源的连接与操作环境,基本任何的操作都是针对特定的Connection完成的。

常用属性:ConnectionString(最重要),ConnectionTimeout,State(连接的状态),Errors

常用方法:Open,Execute,Close

常用事件:ExecuteComplete,ConnectComplete

虽然Command对象与Recordset对象都可以在需要的时候自己隐式的创建一个Connection对象,但是对于需要多次执行命令或查询的场景,还是需要提供一个公共的Connection对象(这个对象的创建与销毁都是需要时间的)来共用。而且对于同一个连接字符串,ADO会采用连接池(存放Connection对象)的方式减少资源的浪费。

ConnectionString中主要需要设置Provider,Data Source,Initial Catalog,User ID,Password,Integrated Security等值,这些大家应该都很熟悉了。当然有些值(像Provider,Mode这种)也可以在Connection的相关属性中设置。

Connection需要先执行Open方法打开后,才能Execute一些命令,最后需要使用Close关闭(通常为了保险起见,需要先检查State,再关闭)以释放资源。

Command:代表执行的添加、修改,删除、查询数据源的命令。

常用属性:ActiveConnection(设置连接字符串),CommandText(核心属性),CommandType,Parameters(一般是存储过程的参数)

常用方法:CreateParameter,Execute(可以有返回值)。

Recordset:代表执行查询命令后的结果集。

常用属性:ActiveConnection(设置连接字符串),BOF,EOF,CursorLocation,Filter,Sort,State,Fields(返回数据的类型)

常用方法:Open,Close,Move,MoveFirst,MoveNext,Find,NextRecordset

通常配合Range对象的CopyFromRecordset方法获取数据,但是这个方法只能获得值,一般需要匹配Fields属性获取列信息。

如果需要精确控制每行每列的值,可以使用RecordCount,Fields以循环的形式获取结果集中的每个值。


For i = 1 To rst.RecordCount
For j = 0 To rst.Fields.Count - 1
Sheet1.Cells(i + 1, j + 1) = rst.Fields(j)
Next j
rst.MoveNext
Next i

如果返回的结果集为空,则BOF与EOF都为True。通常它们也可以配合Fields精确控制结果集中的每个值。

Find方法基本上是支持与SQL中Where语句基本相同的语法。

Error与Errors:代表与数据源相关的操作的详细错误信息,Errors是Connection对象的属性。

Parameter与Parameters:代表基于参数化查询或存储过程的 Command 对象相关联的参数或自变量,Parameters是Command对象的属性。

Field与Fields:代表使用普通数据类型的数据的列,Fields是Recordset对象的属性。

Property与Properties: 代表ADO 对象的描述或控制对象的行为,分为内置属性(通过对象直接调用)和动态属性(通过集合使用 MyObject.Properties(0) 或 MyObject.Properties("Name") 语法来引用)。

Record:代表记录集中的一行、或文件系统的一个文件或一个目录。

Stream:用于读写以及处理二进制数据或文本流。



二、ADO编程模型

  ADO 的目标是访问、编辑和更新数据源,而编程模型体现了为完成该目标所必需的系列动作的顺序。ADO提供类和对象完成以下活动:
•连接到数据源 (Connection对象),并可选择开始一个事务。
•可选择创建对象来表示 SQL 命令 (Command)。
•可选择在 SQL 命令中指定列、表和值作为变量参数 (Parameter)。
•执行命令 (使用Command、Connection 或 Recordset对象完成)。
•如果命令按行返回,则将行存储在缓存中 (使用Recordset对象)。
•可选择创建缓存视图,以便能对数据进行排序、筛选和定位 (使用Recordset对象)。
•通过添加、删除或更改行和列编辑数据 (使用Recordset对象)。
•在适当情况下,使用缓存中的更改内容来更新数据源 (使用Recordset对象)。
•如果使用了事务,则可以接受或拒绝在完成事务期间所作的更改;结束事务 (Connection)。
•释放相关对象(通常是把对象设为Nothing,别忘了Set关键字)。

不管是否显式的使用了Connection对象,这个对象在整个访问数据库的过程中,是始终存在的。

其实除了连接字符串以及数据库特有的一些特性(比如SqlServer支持存储过程)外,访问各种数据库的基本流程和处理的语句,包括SQL语句都是差不多的。



三、ADO实践

ADO对象创建

  对于COM对象的创建方式,大家应该很熟悉了,有两种方式:

后期绑定:使用CreateObject方法。


Dim cnn As Object, rst As Object
Set cnn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")

前期绑定:先引用“Microsoft ActiveX Data Objects 2.x Library”(尽量选择高版本),然后直接就可以使用了。下面两种写法都可以:


Dim cnn1 As ADODB.Connection
Set cnn1 = New ADODB.Connection

Dim cnn2 As New ADODB.Connection

前期绑定能更好的利用VBE(或者说是VBIDE)的Intellisense。



  使用ADO访问各种类型的数据库,基本上除了连接字符串不同,专有特性不同,使用ADO的其它过程基本都差不多,所以下面几种类型数据文件的操作,重点都是介绍各自不同的地方。

使用ADO访问Access中的数据

连接字符串示例:


复制代码

'Provider和Data Source是必须的
'Mode控制访问数据库方式,本例中是排他访问
Public Const AccessConnection As String = _
"Provider= Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Files\Northwind 2007.accdb;" & _
"Mode=Share Exclusive;" & _
"User ID=Admin;" & _
"Password=password"

复制代码

在本例中,使用的是Access 2007,所以使用的Provider是“Microsoft.ACE.OLEDB.12.0”。下面是一个伪代码例子,基本上涵盖了所有的步骤:


复制代码

Public Sub PlainTextQuery()
'省去了定义的部分
sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Files\Northwind 2007.accdb"
sSQL = "SELECT..."


Set rsData = New ADODB.Recordset
rsData.Open sSQL, sConnect, adOpenForwardOnly, adLockReadOnly, adCmdText

If Not rsData.EOF Then
Sheet1.Range("A2").CopyFromRecordset rsData
rsData.Close

With Sheet1.Range("A1:B1")
.Value = Array("Company", "Contact Name")
.Font.Bold = True
End With
'调整列宽
Sheet1.UsedRange.EntireColumn.AutoFit
Else
rsData.Close
MsgBox "Error: No records returned.", vbCritical
End If
'销毁对象
Set rsData = Nothing
End Sub

复制代码

像上面所说那样,解决一个问题,可以使用不同的对象。这里仅使用Recordset就解决了所有的问题,但是当需要使用Connection或者Command对象的时候,毫不犹豫的使用它们。

时刻谨记,对象的创建是需要开销的,当可以重用一个对象的时候(例如Command对象,当执行不同的命令时,只需要把CommandText换掉就可以了),毫不犹豫的使用它。

使用Insert,Update,Delete语句后,可以查询影响的行数来确定操作是否成功了,如果失败了,可以使用Err.Raise来引发一个错误。

Access中支持在数据库中产生和存储SQL语句,想了解更多的可以参看其它资料。

SQL语句中,可以使用IIF简单的进行一些替换处理。



使用ADO访问SqlServer中的数据

连接字符串示例:


复制代码

'常见的两种SqlServer连接字符串形式
Public Const SQLConnection1 As String = _
"Provider=SQLOLEDB;" & _
"Data Source=ComputerName\SQLServerName;" & _
"Initial Catalog=Northwind;" & _
"User ID=User;Password=password;" & _
"Network Library=dbmssocn"

Public Const SQLConnection2 As String = _
"Provider=SQLOLEDB;" & _
"Data Source=ComputerName\SQLServerName;" & _
"Initial Catalog=Northwind;" & _
"Integrated Security=SSPI"

复制代码

除了连接字符串外,Sqlserver由于有存储过程(Stored Procedures),所以在Command对象的CommandText中就可以放入存储过程的名字,然后使用CreateParameter方法创建参数,并通过Parameters.Append方法加入到参数集合中使用。这种调用方式效率比较高,当多次需要调用一个存储过程的时候,推荐这么使用。


复制代码

Set gobjCmd = New ADODB.Command
Set gobjCmd.ActiveConnection = gobjConn
'与文本形式的SQL语句最大的不同就是这里
gobjCmd.CommandText = "spInsertShippers"
gobjCmd.CommandType = adCmdStoredProc

'添加参数,注意第一个参数总是返回值
gobjCmd.Parameters.Append _
gobjCmd.CreateParameter("@RETURN_VALUE", adInteger, _
adParamReturnValue, 0)
gobjCmd.Parameters.Append _
gobjCmd.CreateParameter("@CompanyName", adVarWChar, _
adParamInput, 40)
gobjCmd.Parameters.Append _
gobjCmd.CreateParameter("@Phone", adVarWChar, _
adParamInput, 24)

'给参数赋值
gobjCmd.Parameters("@CompanyName").Value = "Air Carriers"
gobjCmd.Parameters("@Phone").Value = "(206) 555-1212"

'执行存储过程
gobjCmd.Execute Recordsaffected:=lNumAffected, Options:=adExecuteNoRecords

'验证信息
If lNumAffected <> 1 Then
Err.Raise Number:=vbObjectError + 1024, _
Description:="Error executing Command object."

'获取返回的主键信息
lKeyValue = gobjCmd.Parameters("@RETURN_VALUE").Value
Debug.Print "The key value of the new record is: " & CStr(lKeyValue)

复制代码

由于存储过程会作为Connection的动态方法存在,所以简单使用存储过程,特别是只使用很少次的时候,也可以像下面例子这样,直接调用,不过这种方式效率比较低,还是推荐使用上面Command包装的调用方法。


objConn.spGetCustomerNames "UK", rsData

需要注意的是无论何种情况下,Parameters集合的第一个元素都是代表存储过程的返回值,不管实际上这个存储过程有没有返回值。

Sqlserver是支持返回多个结果集的,下面是典型的结果集操作:


复制代码

'假设这个存储过程只返回2个结果集
Do While Not rsData.EOF
'执行相关赋值
rsData.MoveNext
Loop

'切换不同的数据集
Set rsData = rsData.NextRecordset

Do While Not rsData.EOF
'执行相关赋值,例如给下拉列表赋值
'ddShippers.AddItem rsData.Fields(1).Value
rsData.MoveNext
Loop

'这里注意使用NextRecordset关闭和销毁了Recordset,不需要额外的操作了
Set rsData = rsData.NextRecordset

复制代码

使用Connection的时候,通常的目标是尽快访问数据库,尽快再关闭连接。然而很多时候这些数据保存在Recordset中一直使用是可以提高程序效率的,这个时候我们需要的是非连接型的Recordset。这个在ADO中是支持的,你可以从数据库中获得Recordset,然后关闭连接,在内存中保存Recordset并一直使用,然后也可以重新连接更新数据,甚至可以保存Recordset中的数据到别的地方。下面描述的就是一个非连接型Recordset的设置方式:


复制代码

szSQL = "SELECT CustomerID, CompanyName, ContactName FROM Customers"
' 创建非连接型Recordset的步骤
' 1) 创建Recordset对象.
Set grsData = New ADODB.Recordset
' 2) 游标位置设为Client.
grsData.CursorLocation = adUseClient
' 3) 游标类型设为Static.
grsData.CursorType = adOpenStatic
' 4) 锁的类型设为batch optimistic.
grsData.LockType = adLockBatchOptimistic
' 5) 打开记录集.
grsData.Open szSQL, gobjConn, , , adCmdText
' 6) 把Recordset的ActiveConnection设为Nothing.
Set grsData.ActiveConnection = Nothing

Sheet1.Range("A1").CopyFromRecordset grsData

复制代码

注意上面的grsData是定义为Public类型的:Public grsData As ADODB.Recordset。获得到这个对象以后,就可以使用Filter,Sort等手段,获取需要的数据。



  不用怀疑,利用ADO去处理下面两种非关系型数据(但是是格式化的数据)那是非常方便的,因为SQL语句是强大的,可以完成很多的查询,筛选功能。

使用ADO访问Excel中的数据

连接字符串示例:


ExcelConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Files\Sales.xlsx;" & _
"Extended Properties=Excel 12.0;"

注意访问Access与Excel的连接字符串中,Provider是相同的;但是Excel需要多加上Extended Properties,这里的版本号随着Excel的版本不同而不同。

使用的SQL语句与Access中基本相同,除了以下几点:


复制代码

' 使用Sheet名字作为表名的时候需要加$符号和方括号
' 如果Sheet名字中有空格的,名字两边可以用单引号括起来,例如:['My Sheet'$]
sSQL1 = "SELECT * FROM [Sheet1$]"
' 如果表名是Sheet级别的名字,可以把这个表名接在$符号后面
sSQL2 = "SELECT * FROM [Sheet1$SheetLevelName];"
' 如果表名是一个Range范围,也直接加在$符号后面
sSQL3 = "SELECT * FROM [Sales$A1:E89];"
' 如果表名是一个Workbook级别的名字,可以直接使用
sSQL4 = "SELECT * FROM BookLevelName;"

复制代码

注意了,OLE DB默认认为Worksheet中的第一行是列名,而不是数据。如果不是这种情况,那么需要告诉OLE DB,第一行也是数据,这个时候需要在连接字符串中的Extended Properties中加上“HDR=No”。如下列所示:


sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Files\Sales.xlsx;" & _
"Extended Properties=""Excel 12.0;HDR=No"";"
'注意上面的引号数目



使用ADO访问Text中的数据

对于含有大量格式化的文本数据,例如csv文件,使用ADO简直就是如鱼得水,你能充分享受SQL带来的强大便捷性。

连接字符串示例:


sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Files\;" & _
"Extended Properties=Text;"

注意了,Provider与访问Excel是一样的,不同的是,为了方便处理多个这样的文件,连接字符串中不需要提供文件名字;而在SQL语句中的表名,使用的是文件名。如下面的例子:


sSQL = "SELECT * FROM Sales.csv WHERE Type='Art';"

同样的,OLE DB默认认为文件中的第一行是列名,而不是数据。如果不是这种情况,那么需要告诉OLE DB,第一行也是数据,这个时候需要在连接字符串中的Extended Properties中加上“HDR=No”,参考上面的设置。



  到这里,基本的ADO操作已经总结完了,但是ADO的功能绝对不仅仅如此,它还包括另外一大块内容,那就是RDS编程模型。RDS模型解决的是网络数据访问问题,这个在Excel中比较少见,这里就不重点介绍了,有兴趣的可以自己琢磨琢磨看。

ADO的对象编程参考:http://doc.51windows.net/ado/?url=/ado/mdobjadoobjmod.htm或者http://codecoke.com/Tech/ado/mdobjadoobjects.htm

ADO连接字符串大全:http://www.excelpx.com/thread-2212-1-1.html
转自http://www.cnblogs.com/dxy1982/archive/2011/09/14/2176104.html
VB速查大全(数据库、表格及报表编程) ★ VB错误处理,ado常见错误,VB数据类型等,网上有很多教程是错的,强烈建议看此文 VB异常处理 (很重要) ado常见错误 ado游标及锁定介绍 免费报表控件 免费表格控件 vb数据类型(很多程序出问题出在这个,一定要看,VB msdn说的不太对) VB可用的AES加密sqlite_odbc 及 cairo_sqlite (VBRichClient自带的非odbc连接) 有vbRichClient代替winsock、实现vb多线程及远程调用activeX等 阅读详情

相关推荐

在VB6.0中设置ADO控件属性连接Microsoft ACCESS 2007数据库

在VB6.0中设置ADO控件属性连接Microsoft ACCESS 2007数据库        使用VB6.0一般支持.mdb格式的数据库,为了能够使VB6.0能连接.accdb格式的数据库,需要一定的设置。微软公司的Microsoft ACCESS 2007生成的数据库刚好是.accdb的数据库。之前本人第一次用VB6.0编写程序时,当涉及到ADO控件连接数据库部分遇到了ADO控件相关属性设

清风古韵 7542

VB ADO常用方法

 VB使用ADODB操作数据库的常用方法ADO常用方法下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。如有补充不胜荣幸准备工作========Dim conn As New ADODB.Connection 创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As AD

别人笑我太疯癫,我笑他人看不穿 2605

Ado/Ado.net与Asp/Asp.net关系

前言 * Asp(Active Server Pages),动态服务页面; * Asp.Net (Active Server Pages基于.NET Framework),基于.net平台的动态服务页面,又称Asp+; * Ado (ActiveX Data Objects),ActiveX数据对象,用于表示用户数据库中的数据结构和所包含的数据 * Ado.Net(ActiveX Dat

十年磨一剑,沉淀…… 2882

Excel·VBA使用ADO读取工作簿工作表数据

不打开工作簿读取数据:查询遍历写入数组;查询整体写入数组;查询工作簿所有工作表名称;查询工作簿所有工作表数据

hhhhh_51的博客 4946

ADO.NET 技术

ADO.NET 技术 前言:    作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角 色。本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET 的主要组成部分。 一、ADO.NET是什么?   简单的说,ADO.NET是一组允许.NET开发人员使用

何新生(Daniel) 勇敢坚毅真正之才智乃刚毅之志向。 —— 拿破仑 3598

DAO 、ADO和ADO.NET

1.什么是DAO(Data Access Objects) DAO数据访问对象是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许开发者通过ODBC(Open Database Connectivity,是微软提出数据库访问接口标准)连接到Access数据库,对其进行访问。 2.什么是ADO(ActiveX Data Objects) ADO是一项微软的技术,是A

shadowyelling的专栏 1654

ADO与ADO.NET 的区别

前面也分别对ADO和ADO.NET进行概述,从前面的两篇文章来看,我们都知道ADO与ADO.NET 都是一种数据库访问的方式,都是从最基本的Connection(连接)对象开始的,可以说ADO.NET是ADO的一种改进版,在ADO的基础之上ADO.NET 统一了数据容器类编程接口,无论你打算用哪种编写哪种应用程序,都可以通过同一组类来处理数据 。 在ADO的基础上,ADO.NET做了很多的改进,以...

极客神殿 3578

ADO 介绍

ADO 被用于从网页访问数据库。ADO 是一项微软的技术ADO 指 ActiveX 数据对象(ActiveXDataObjects)ADO 是一个微软的 Active-X 组件ADO 会随微软的 IIS 被自动安装ADO 是一个访问数据库中数据的编程接口。

xiaoaque的博客 959

ODBC、OLEDB、ADO、ADO.NET之间的关系

相信看到这篇文章的人,心中肯定有这样的想法:ODBC、OLEDB、ADO、ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来。 先说ODBC,官方的定义是这样的,开放数据库互连(ODBC)是MICROSOFT提出的数据库访问接口标准。ODBC(Open DatabaseConnectivity,开放数据库互连)提供了一种标准的API(应

梦想起飞的地方,必须用心去经营 9845

YOLOv8傻瓜式教程

YOLOv8傻瓜式教程,附带详细参数配置。

Father_of_Python的博客 1万+

MFC ADO使用

MFC ADO使用 1.导入ADO链接库 #import "C:/Program Files/Common Files/System/ado/msado15.dll"no_namespace rename("EOF", "adoEOF")rename("BOF", "adoBOF") //两行写一行,写在stdafx.h文件末尾 。C为系统盘。   2.ADO封装 工

SeeBro专栏 1万+

保姆级教程:用ArcGIS Pro搞定云南30米分辨率DEM地形图(附数据下载与配色方案)

本文提供了一份详细的ArcGIS Pro教程,指导用户如何制作云南30米分辨率DEM地形图。从数据下载、预处理到镶嵌与质量控制,再到地形分析与可视化,全流程覆盖云南复杂地形的处理要点。特别包含数据下载链接、配色方案及常见问题解决方案,适合地理信息分析新手和专业人士。

weixin_30467199的博客 309

VB中基于ADO的数据库访问

在VB中常用的数据库访问接口有三种,即DAO、RDO、ADO三种对象模式。三种模式的具体解释见上篇文章: DAO/RDO/ADO,ODBC,OLEDB之间的关系 本篇文章我们重点介绍一下ADO的应用。 一:ADO的简介 ADO(ActiveX Data Object)是由微软公司开发的最新的数据库访问接口技术,因为ADO技术对OLEDB(Object Link and Embeddin

区块链领域填坑的java程序猿 1万+

深度学习实战102-基于深度学习的网络入侵检测系统,利用各种AI模型和pytorch框架实现网络入侵检测

在明确了研究背景后,我们需要设定明确的项目目标。本项目的核心目标是开发一个高精度、低延迟的网络入侵检测系统检测准确率:达到95%以上,确保系统能够有效识别各类已知和未知的入侵行为。响应时间:控制在毫秒级范围内,以实现实时监测和快速响应。模型鲁棒性:在面对不同类型的网络环境和攻击手法时,系统需保持稳定的性能输出。可扩展性:系统设计需考虑未来可能面临的新型威胁,便于后续升级和维护。

微学AI的博客 1792

C++经典面试题100例及答案

答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的提高了编译效率。答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。答:常对象是指在任何场合都不能对其成员的值进行修改的对象。答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。

usstmiracle的博客 3万+

ADO与ADO.net不同

引言      在我们进入.net平台以后,我们在做项目的时候就离不开ADO.net了,因为只要我们和数据库打交道,我们就必须利用它,然而我们在VB6.0的时代却一直和ADO做朋友,但是随者Web程序的兴起,我们的编程方式发生了重大的改变,然而传统的传统的数据库连线保存设计法无法适用于此类应用程序,这让ADO应用程序遇到了很大的瓶颈。所谓“时势造英雄”在此恰到的时机,ADO.net就应运而生了。

Jack 架构师之路 1326

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3051

为 ADO 程序员设计的 ADO.NET !

为 ADO 程序员设计的 ADO.NET 摘要:本文讨论如何以 ADO.NET 方式实现基本数据库操作,以及何时使用 ADO.NET 代替 ADO。 目录.NET 中的数据访问读取数据DataSet、DataTable 和 Recordset转换现有代码更新数据XML 扩展支持总结自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的

wujp1976的专栏 1592

基于STM32设计的电能质量控制系统_353

本项目基于STM32F103RCT6微控制器设计了一套电能质量控制系统,实现了对火焰、烟雾、环境温湿度、电压、电流及功率等多项参数的实时监测与报警。系统通过MQ2烟雾传感器、火焰传感器、SHT30温湿度传感器及电力参数采集模块采集数据,采用高电平触发有源蜂鸣器进行异常报警。采集的数据通过ESP8266无线模块以AP+TCP模式上传至基于Qt开发的手机APP和电脑上位机,实现远程实时监控和历史数据管理。系统配备1.44寸LCD显示屏,实现本地数据显示。软件采用Keil5开发,采用寄存器编程方式,提高系统响应速

253

网络安全系列-四十三:使用Suricata分析恶意流量pcap文件

本文基于[网络安全系列-三十六:使用Suricata IDS分析pcap文件]和 [网络安全系列-四十二: Suricata之rulesets的激活、更新及动态加载]的基础上,使用suricata针对包含恶意流量的pcap文件进行分析,触发事件告警,并对suricata输出的日志进行逐个分析,让你掌握针对恶意流量的分析步骤,及怎么查看suricata输出的日志。

penriver的博客 2886

ADO和ADO.NET

 ADO对于用本机代码编写的应用程序,ADO 为 OLE db 数据提供程序提供基于 com 的应用程序级别接口。与 ADO.NET 相似,ADO 支持各种开发需要,包括使用与关系数据库和其他存储区中的数据的活连接来创建前端数据库客户端和中间层业务对象。而且,像 ADO.NET一样,ADO可构建客户端记录集、使用松耦合记录集、处理 OLE DB 的数据整形行集合。ADO还支持一些不通过 A

*OliverAi's Sky* 1084

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ADO与ADO.NE

1、ADO与ADO.NET 百度百科定义    1)ADO(ActiveX Data Objects)是基于组件的数据库编程接口,它是一个和编程语言无关的COM组件系统。 2)ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在N

做一枚优雅的IT女 1080

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ADO.NET (二)—— ADO和ADO .NET对比

ADO.NET (二)—— ADO和ADO .NET对比    我们知道ADO.NET的两大核心组件分别是Data Provider和DataSet。如果说 DataSet是ADO.NET的心脏,那么Data Provider绝对是ADO.NET的左臂右膀。 Data Provider提供了访问外部数据数据源的可能性,而且外部的数据源是多样的。本

何新生(Daniel) 勇敢坚毅真正之才智乃刚毅之志向。 —— 拿破仑 1374

ADO与ADO.Net

在介绍ADO.Net之前先让我们回顾一下在红皮书中学习的ADO的内容。      ADO(ActiveX Data Objects),我们称它为一种用于数据访问的对象模型,《VB.Net》视频中称它为用于存取资料库的物件集合。资料库就是数据,物件即对象。这样看来两种说法完全一样。提起ADO,我们只要问自己两个问题: 它是什么?  ——对象的集合干什么用的?——访问数据     这

To Begin,Begin   1616

ADO 教程

本文介绍了 ADO(ActiveX Data Objects)数据库访问技术,重点讲解其在经典 ASP 和 VBScript 环境中的应用。内容涵盖 ADO 核心对象(Connection、Recordset、Command)、基础操作(连接数据库、查询记录、增删改查)以及进阶用法(参数化查询、事务处理)。同时提供了 Python 通过 pywin32 调用 ADO 的示例,并给出错误处理、性能优化等实用建议。适合需要维护传统 ASP 系统或学习经典数据库访问技术的开发者参考。

m0_57545130的博客 1173
上一篇: vba regexp
下一篇: vba show Multi data
tangleisoft
博客等级 码龄16年 8粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值