网站首页 > 技术文章 正文
1、ADO是什么,如何使用?
ADO是ActiveX数据对象(ActiveX Data Objects)的缩写,是一种微软的技术,用于从网页访问数据库12。ADO是一个Active-X组件,会随微软的IIS被自动安装12。ADO是一个访问数据库中数据的编程接口,可以使用不同的语言,如ASP、VB、C#等23。
使用ADO的一般步骤如下:
- 创建一个到数据库的ADO连接
- 打开数据库连接
- 创建ADO记录集
- 从记录集提取您需要的数据
- 关闭记录集
- 关闭连接
具体的代码示例可以参考3?。
(1) ADO 简介 - w3school. https://www.w3school.com.cn/ado/ado_intro.asp. (2) ADO 简介 | 菜鸟教程. https://www.runoob.com/ado/ado-intro.html. (3) ADO 教程 | 菜鸟教程. https://www.runoob.com/ado/ado-tutorial.html. (4) ADO是什么?它的作用是什么?_百度知道. https://zhidao.baidu.com/question/9003082.html.
2、ado除了excel中还有哪里能用到
ADO除了Excel中,还可以用于访问其他类型的文件,如CSV、TSV、xls、mdb等12。ADO可以使用不同的语言,如ASP、VB、C#等,来操作这些文件中的数据23。ADO可以使用SQL语句来实现数据的过滤、聚合、计算等功能1?。
(1) 如何使用ADO 的方式读写EXCEL - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/357675861. (2) 【进阶】使用 ADO 操作 Excel 文档 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/19767178. (3) 利用ADO连接EXCEL,并实现数据的复杂计算 - 知乎. https://zhuanlan.zhihu.com/p/72625633. (4) VBA+ADO+SQL「高效查询」 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/350970006.
3、ADO操作CSV文件示例
ADO操作CSV文件的例子有很多,这里给你一个简单的参考1。假设你有一个CSV文件,内容如下:
Name,Number
A,1
B,1
C,2
D,2
E,1
F,1
你可以使用以下代码来读取这个文件中的数据,并显示出Number等于2的那些行:
Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""text;HDR=Yes;FMT=Delimited (,)"";Data Source=" & ThisWorkbook.Path & "\"
SQL = "select * from [test.csv] where Number = 2"
Set rs = cnn.Execute(SQL)
Sheets("结果").Cells.ClearContents
Sheets("结果").Range("a2").CopyFromRecordset rs
For i = 0 To rs.Fields.Count - 1
Sheets("结果").Cells(1, i + 1) = rs.Fields(i).Name
Next
rs.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
MsgBox "OK"
(1) 利用VBA快速处理EXCEL、CSV数据---超简代码 - 知乎. https://zhuanlan.zhihu.com/p/459235265. (2) Import or update work items in bulk with CSV files - Azure Boards. https://learn.microsoft.com/en-us/azure/devops/boards/queries/import-work-items-from-csv?view=azure-devops. (3) 使用 ADO 导入 CSV 文件delphi导出csv_pcplayer的博客-CSDN博客. https://blog.csdn.net/pcplayer/article/details/115221601. (4) ADO+读取、汇总CSV文件ado csv 3f_qq_44390640的博客-CSDN博客. https://blog.csdn.net/qq_44390640/article/details/97099399.
4、Open方法讲解
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""text;HDR=Yes;FMT=Delimited
这段代码是用来打开一个ADO连接对象,用于访问CSV文件的。其中:
- rovider=Microsoft.ACE.OLEDB.12.0 是指定使用的数据提供者,用于连接不同类型的数据源。
- Extended Properties=""text;HDR=Yes;FMT=Delimited 是指定连接的一些属性,如文件类型、是否有标题行、分隔符等。
- Data Source 是指定要访问的文件的路径。
5、ConnectionString和open后面得参数有关联么?
是的,ConnectionString和open后面的参数有关联。ConnectionString是一个属性,用于存储连接字符串,也就是open后面的参数。你可以先给ConnectionString赋值,然后再调用open方法,也可以直接在open方法中传入连接字符串。两种方式是等效的。例如:
'方式一:先给ConnectionString赋值,再调用open
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""text;HDR=Yes;FMT=Delimited (,)"";Data Source=" & ThisWorkbook.Path & "\"
cnn.Open
'方式二:直接在open方法中传入连接字符串
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""text;HDR=Yes;FMT=Delimited (,)"";Data Source=" & ThisWorkbook.Path & "\"
6、open 必须要填写那些参数
open方法有四个参数,分别是ConnectionString, UserID, Password, Options。其中,只有ConnectionString是必须要填写的,其他三个参数都是可选的。ConnectionString是指定要连接的数据源的字符串,UserID和Password是指定连接时的身份验证信息,Options是指定连接的一些选项,如只读、异步等。例如:
'只填写ConnectionString
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""text;HDR=Yes;FMT=Delimited (,)"";Data Source=" & ThisWorkbook.Path & "\"
'填写ConnectionString和UserID
cnn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyDatabase", "MyUser"
'填写ConnectionString和Options
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""text;HDR=Yes;FMT=Delimited (,)"";Data Source=" & ThisWorkbook.Path & "\", , , adModeRead
'填写所有参数
cnn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyDatabase", "MyUser", "MyPassword", adAsyncConnect
7、Provider 参数都有哪些可选值?
Provider参数是指定连接字符串中的一个参数,用来表示连接到数据源所使用的提供程序12。不同的提供程序可以支持不同的数据源,例如SQL Server、Access、Oracle、Excel等。Provider参数的可选值取决于你安装了哪些提供程序,以及你想要连接到哪种数据源。一些常见的Provider参数的可选值有3?:
- Provider=SQLOLEDB:表示使用Microsoft OLE DB Provider for SQL Server,可以连接到SQL Server数据库。
- Provider=Microsoft.ACE.OLEDB.12.0:表示使用Microsoft Office 12.0 Access Database Engine OLE DB Provider,可以连接到Access、Excel等Office文件。
- Provider=MSDAORA:表示使用Microsoft OLE DB Provider for Oracle,可以连接到Oracle数据库。
- Provider=Microsoft.Jet.OLEDB.4.0:表示使用Microsoft Jet 4.0 OLE DB Provider,可以连接到Access、Excel等Office文件。
你可以参考了解更多关于Provider参数的信息。
(1) 命名参数和可选参数 - C# 编程指南 | Microsoft Learn. https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments. (2) 【vue-plugin-hiprint】使用-参数篇 - 掘金 - 稀土掘金. https://juejin.cn/post/7211745375920111677. (3) 可选参数 - Visual Basic | Microsoft Learn. https://learn.microsoft.com/zh-cn/dotnet/visual-basic/programming-guide/language-features/procedures/optional-parameters. (4) 二十四种设计模式:提供者模式(Provider Pattern) - Richfiter - 博客园. https://www.cnblogs.com/taotaodetuer/p/6182743.html.
8、Options参数都有哪些可选值?
Options参数是用来指定一些连接的选项,如只读、异步等。它可以是一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值,这些值可与位 AND 运算符结合使用。例如:
- adCmdTable:指定 Source 参数是一个表名称。
- adCmdText:指定 Source 参数是一个 SQL 语句或存储过程。
- adCmdStoredProc:指定 Source 参数是一个存储过程名称。
- adCmdUnknown:指定 Source 参数的类型未知。
- adCmdFile:指定 Source 参数是一个包含永久存储 Recordset 的文件或 Stream 对象的名称。
- adCmdTableDirect:指定 Source 参数是一个表名称,且提供对表的直接访问。
- adAsyncExecute:指定连接以异步方式执行命令。
- adAsyncFetch:指定 Recordset 对象以异步方式提取记录。
- adAsyncFetchNonBlocking:指定 Recordset 对象以非阻塞方式提取记录。
- adExecuteNoRecords:指定命令不返回记录集。
- adExecuteStream:指定命令返回一个 Stream 对象,而不是一个 Recordset 对象。
- adExecuteRecord:指定命令返回一个 Record 对象,而不是一个 Recordset 对象。
你可以参考123了解更多关于 Options 参数的信息。
(1) Open Method (ADO Connection) - ActiveX Data Objects (ADO). https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/open-method-ado-connection?view=sql-server-ver16. (2) Open 方法(ADO 记录集) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/open-method-ado-recordset. (3) Open Method (ADO Recordset) - ActiveX Data Objects (ADO). https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/open-method-ado-recordset?view=sql-server-ver16. (4) Open method (ADO Recordset) | Microsoft Learn. https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/open-method-ado-recordset.
9、介绍一下recordset对象
Recordset对象是用来表示一个数据库表中的记录集,或者一个查询的结果集,或者一个以前保存的Recordset12。你可以使用Recordset对象来操作数据库中的数据,例如添加、修改、删除、查找、排序等12。Recordset对象由记录和字段组成,你可以使用Fields集合来访问每个字段的值12。你还可以使用不同类型的游标来控制Recordset对象的行为,例如动态游标、静态游标、仅向前游标等12。Recordset对象有很多属性和方法,你可以参考3?了解更多细节。
(1) Recordset 对象 (DAO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/recordset-object-dao. (2) ADO Recordset 对象 | 菜鸟教程. https://www.runoob.com/ado/ado-ref-recordset.html. (3) 记录集对象 (ADO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/recordset-object-ado. (4) ADO Recordset 对象 - w3school. https://www.w3school.com.cn/ado/ado_ref_recordset.asp.
10、使用Recordset对象的示例吗
好的,这里有一个使用Recordset对象的示例1。假设你有一个数据库,其中有一个名为Customers的表,包含以下字段:
ID | Name | Phone |
1 | Alice | 123456 |
2 | Bob | 234567 |
3 | Carol | 345678 |
你可以使用以下代码来打开一个Recordset对象,访问Customers表中的数据,并显示每个客户的姓名和电话:
Dim cnn As ADODB.Connection '定义一个连接对象
Dim rst As ADODB.Recordset '定义一个记录集对象
Set cnn = New ADODB.Connection '创建连接对象
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyDatabase.accdb" '打开数据库连接
Set rst = New ADODB.Recordset '创建记录集对象
rst.Open "Customers", cnn, adOpenStatic, adLockOptimistic '打开Customers表的记录集
Do While Not rst.EOF '循环遍历记录集
MsgBox "Name: " & rst("Name") & vbCrLf & "Phone: " & rst("Phone") '显示每个客户的姓名和电话
rst.MoveNext '移动到下一条记录
Loop
rst.Close '关闭记录集
cnn.Close '关闭连接
Set rst = Nothing '释放记录集对象
Set cnn = Nothing '释放连接对象
(1) Recordset object (DAO) | Microsoft Learn. https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/recordset-object-dao. (2) Recordset 对象 (DAO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/recordset-object-dao. (3) Recordset 属性 - Microsoft 支持. https://support.microsoft.com/zh-cn/office/recordset-%E5%B1%9E%E6%80%A7-753d8ef0-6ad9-4731-b116-1788e3276600.
11、定义了链接对象为何还需要使用NEW关键字创建一个新的对象?
使用Dim关键字只是声明了一个连接对象的变量,但并没有创建实际的对象。使用New关键字才能创建一个新的连接对象,并将其分配给变量。你也可以使用Set关键字和CreateObject函数来创建一个新的连接对象,例如:
Dim cnn As ADODB.Connection '声明一个连接对象的变量
Set cnn = CreateObject("ADODB.Connection") '创建一个新的连接对象,并将其分配给变量
12、其他示例中,在定义变量后就直接使用了,并未使用new关键字创建新的对象,这种使用方法可以么?
这种使用方法也可以,但是要注意一点,如果你在定义变量时就使用了New关键字,例如:
Dim cnn As New ADODB.Connection '声明并创建一个连接对象的变量
那么你就不能再使用Set关键字和CreateObject函数来创建一个新的连接对象,否则会发生错误。你只能直接使用这个变量来打开连接,例如:
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyDatabase.accdb" '打开数据库连接
13、那么哪种方法更好呢?
这个问题没有一个确定的答案,不同的方法有不同的优缺点。使用New关键字在定义变量时就创建对象的方法可以节省一些代码,但是也有一些缺点,例如:
- 如果你不需要使用这个对象,或者只需要在某个条件下使用这个对象,那么你就浪费了内存空间和资源来创建一个不必要的对象。
- 如果你在程序中多次使用New关键字来创建同一个对象,那么你就可能造成内存泄漏,因为每次都会创建一个新的对象,而旧的对象没有被释放。
- 如果你想在程序中使用多个不同的对象,那么你就不能使用New关键字来创建对象,因为它只能创建一个默认的对象。
使用Set关键字和CreateObject函数来创建对象的方法可以避免上述的缺点,但是也有一些缺点,例如:
- 你需要多写一些代码来创建对象,并且要记住使用Set关键字,否则会发生错误。
- 你需要知道对象的ProgID(程序标识符),例如"ADODB.Connection",并且要保证拼写正确,否则会发生错误。
- 你需要在不需要使用对象时,显式地将其设置为Nothing(在Visual Basic中)或NULL(在其他语言中),以便释放内存空间和资源。
所以,你可以根据自己的需求和喜好来选择合适的方法来创建对象。
14、请介绍一下这段代码
rst.Open "Customers", cnn, adOpenStatic, adLockOptimistic
这段代码是使用Open方法来打开一个Recordset对象,其中:
- rst是一个Recordset对象的变量,已经用New关键字创建了。
- "Customers"是一个字符串值,表示Recordset对象的数据源,这里是一个表的名称。
- cnn是一个Connection对象的变量,表示打开Recordset对象的连接。
- adOpenStatic是一个CursorTypeEnum值,表示Recordset对象的游标类型,这里是静态游标,即一个记录集的静态副本。
- adLockOptimistic是一个LockTypeEnum值,表示Recordset对象的锁定类型,这里是乐观锁定,即在更新记录时不锁定数据源。
你可以参考了解更多关于Open方法的信息。
15、Recordset对象的open方法和connection得open方法有什么区别? 它需要接收那些参数?最少应该接收那些参数?
Recordset对象的Open方法和Connection对象的Open方法的区别是:
- Recordset对象的Open方法是用来打开一个记录集对象,表示一个数据库表中的记录集,或者一个查询的结果集,或者一个以前保存的Recordset12。Connection对象的Open方法是用来打开一个连接对象,表示与数据源的连接3?。
- Recordset对象的Open方法需要接收以下参数12:
- Source:指定Recordset对象的数据源,可以是一个表名、查询名、SQL语句或Command对象。
- ActiveConnection:指定Recordset对象的活动连接,可以是一个连接字符串、Connection对象或Nothing。
- CursorType:指定Recordset对象的游标类型,可以是adOpenForwardOnly、adOpenKeyset、adOpenDynamic或adOpenStatic。
- LockType:指定Recordset对象的锁定类型,可以是adLockReadOnly、adLockPessimistic、adLockOptimistic或adLockBatchOptimistic。
- Options:指定Recordset对象的其他选项,可以是adCmdText、adCmdTable、adCmdStoredProc等。
- Connection对象的Open方法需要接收以下参数3?:
- ConnectionString:指定连接字符串,包含用于建立连接所需的信息,如提供程序名称、数据源名称、用户ID、密码等。
- UserID:指定连接到数据源所需的用户ID,如果已包含在连接字符串中,则可以省略。
- Password:指定连接到数据源所需的密码,如果已包含在连接字符串中,则可以省略。
- Options:指定连接选项,可以是adConnectUnspecified、adAsyncConnect或adPrompt。
- Recordset对象的Open方法最少应该接收Source和ActiveConnection两个参数12。Connection对象的Open方法最少应该接收ConnectionString一个参数3?。
(1) 打开 ADO 连接和记录集对象 - SQL Server | Microsoft Learn. https://learn.microsoft.com/zh-cn/troubleshoot/sql/connect/open-ado-connection-recordset-objects. (2) ADO Recordset 对象 | 菜鸟教程. https://www.runoob.com/ado/ado-ref-recordset.html. (3) Recordset 对象 (DAO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/recordset-object-dao. (4) 開啟 ADO 連接和 Recordset 物件 - SQL Server | Microsoft Learn. https://learn.microsoft.com/zh-tw/troubleshoot/sql/connect/open-ado-connection-recordset-objects.
16、请为我演示指定Recordset对象的数据源的不同方法
指定Recordset对象的数据源的不同方法有以下几种:
- 使用一个表名、查询名或SQL语句作为Source参数,例如:
rst.Open "Customers", cnn '使用表名
rst.Open "SELECT * FROM Customers", cnn '使用SQL语句
rst.Open "qryCustomers", cnn '使用查询名
- 使用一个Command对象作为Source参数,例如:
Set cmd = New ADODB.Command '创建一个Command对象
cmd.ActiveConnection = cnn '指定活动连接
cmd.CommandText = "SELECT * FROM Customers" '指定命令文本
Set rst = New ADODB.Recordset '创建一个Recordset对象
rst.Open cmd '使用Command对象作为数据源
- 使用一个已保存的Recordset文件作为Source参数,例如:
Set rst = New ADODB.Recordset '创建一个Recordset对象
rst.Open "C:\MyRecordset.rst" '使用已保存的Recordset文件作为数据源
17、command对象
Command对象是用来执行面向数据库的一次简单查询的对象12。你可以使用Command对象来执行SQL语句或存储过程,以及定义参数化的查询和存储过程参数12。Command对象的主要特性是有能力使用存储查询和带有参数的存储过程3?。
Command对象有以下属性12:
- ActiveConnection:设置或返回包含了定义连接或Connection对象的字符串。
- CommandText:设置或返回包含提供者命令(如SQL语句、表格名称或存储的过程调用)的字符串值。
- CommandTimeout:设置或返回等待命令执行的时间(单位为秒)。
- CommandType:设置或返回一个Command对象的类型,如adCmdText、adCmdTable、adCmdStoredProc等。
- Name:设置或返回一个Command对象的名称。
- Prepared:指示执行前是否保存命令的编译版本(已经准备好的版本)。
- State:返回一个值,此值可描述该Command对象处于打开、关闭、连接、执行还是取回数据的状态。
Command对象有以下方法12:
- Cancel:取消一个方法的一次执行。
- CreateParameter:创建一个新的Parameter对象。
- Execute:执行CommandText属性中的查询、SQL语句或存储过程。
Command对象有以下集合12:
- Parameters:包含一个Command对象的所有Parameter对象。
- Properties:包含一个Command对象的所有Property对象。
(1) Command 对象概述 | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/command-object-overview. (2) ADO Command 对象 | 菜鸟教程. https://www.runoob.com/ado/ado-command.html. (3) Command对象_百度百科. https://baike.baidu.com/item/Command%E5%AF%B9%E8%B1%A1/8058465. (4) 设计模式之美:Command(命令) - sangmado - 博客园. https://www.cnblogs.com/gaochundong/p/design_pattern_command.html.
18、command对象和connection以及recordset对象有什么区别?
Command对象、Connection对象和Recordset对象都是ADO(ActiveX Data Objects)的核心对象,用于访问和操作数据源 。它们之间的区别是:
- Connection对象表示与数据源的连接,可以使用Open方法打开连接,使用Close方法关闭连接,使用Execute方法执行SQL语句或存储过程 。
- Command对象表示要执行的命令,可以使用CommandText属性定义命令的可执行文本(如SQL语句或存储过程),使用Parameter对象和Parameters集合定义参数化的查询和存储过程参数,使用Execute方法执行命令并返回Recordset对象(如果适用) 。
- Recordset对象表示一个记录集,可以是一个数据库表中的记录集,或者一个查询的结果集,或者一个以前保存的Recordset 。可以使用Open方法打开一个Recordset对象,使用Close方法关闭一个Recordset对象,使用Move系列方法在Recordset对象中移动记录指针,使用AddNew、Delete、Update等方法对Recordset对象中的数据进行操作 。
简单来说,Connection对象是用来建立和管理与数据源的连接,Command对象是用来定义和执行对数据源的命令,Recordset对象是用来容纳和操作从数据源获取的数据。
19、Connection对象、Command对象和Recordset对象的示例
假设你想要连接到一个SQL Server数据库,并执行一个带有参数的存储过程,然后遍历返回的记录集,你可以使用以下代码:
'创建一个Connection对象
Dim cnn As New ADODB.Connection
'设置连接字符串,指定提供程序、数据源、用户ID、密码等信息
cnn.ConnectionString = "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyDatabase;User ID=MyUser;Password=MyPassword;"
'打开连接
cnn.Open
'创建一个Command对象
Dim cmd As New ADODB.Command
'设置活动连接为Connection对象
cmd.ActiveConnection = cnn
'设置命令文本为存储过程的名称
cmd.CommandText = "spGetCustomerByID"
'设置命令类型为存储过程
cmd.CommandType = adCmdStoredProc
'创建一个Parameter对象,指定参数的名称、类型、方向、大小和值
Dim param As New ADODB.Parameter
param.Name = "@CustomerID"
param.Type = adInteger
param.Direction = adParamInput
param.Size = 4
param.Value = 1234 '假设要查询的客户ID为1234
'将Parameter对象添加到Command对象的Parameters集合中
cmd.Parameters.Append param
'创建一个Recordset对象
Dim rst As New ADODB.Recordset
'使用Command对象的Execute方法执行存储过程,并返回Recordset对象
Set rst = cmd.Execute
'判断Recordset对象是否为空
If Not rst.EOF And Not rst.BOF Then
'遍历Recordset对象中的每一条记录,打印字段的值
Do While Not rst.EOF
'假设存储过程返回了客户的姓名和电话号码两个字段,分别命名为Name和Phone
Debug.Print "Name: " & rst("Name") & ", Phone: " & rst("Phone")
'移动到下一条记录
rst.MoveNext
Loop
End If
'关闭Recordset对象和Connection对象,释放资源
rst.Close
cnn.Close
20、Command对象、Connection对象和Recordset对象 除了这三种还有其他对象么?
Command对象、Connection对象和Recordset对象是 ADO 中的三个核心对象,用于连接数据库、执行命令和处理数据12。除了这三种对象,ADO 中还有其他对象,例如 Error 对象、Field 对象、Parameter 对象、Property 对象、Record 对象和 Stream 对象1。这些对象有不同的属性和方法,用于实现不同的功能。可以参考 ADO 程序员参考1 来了解更多细节。
(1) 记录集对象 (ADO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/recordset-object-ado.
(2) 如何正确理解和使用Command、Connection和 Recordset三个对象? - 憶言 - 博客园. https://www.cnblogs.com/yybk/archive/2012/03/25/2416648.html.
(3) ADO中有三个核心对象connection对象,command对象,recordset对象,为什么是三个对象而不是三个类名????. https://www.zhihu.com/question/23007424.
(4) Recordset 对象 (DAO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/recordset-object-dao.
(5) ActiveConnection 属性 (ADO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/activeconnection-property-ado.
(6) C#连接数据库之Connection、Command、DataReader用法总结. https://blog.csdn.net/promsing/article/details/107973777.
21、Field对象
Field对象是 ADO 中的一个对象,用于表示 Recordset 中的一个列1。使用 Field 对象的 Value 属性可以设置或返回当前记录的数据1。取决于提供程序所公开的功能, Field 对象的某些集合、方法或属性可能不可用1。使用 Name 属性返回字段的名称1。使用 Value 属性查看或更改字段中的数据1。使用 Type 属性返回字段的数据类型1。使用 AppendChunk 和 GetChunk 方法处理二进制数据和长文本数据1。使用 Properties 集合访问提供程序特定的属性1。
(1) 字段对象 - ActiveX Data Objects (ADO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/sql/ado/guide/data/the-field-object?view=sql-server-ver16. (2) Work item fields and attributes in Azure Boards. https://learn.microsoft.com/en-us/azure/devops/boards/work-items/work-item-fields?view=azure-devops. (3) Field 对象 - ActiveX 数据对象 (ADO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/field-object-ado.
22、Field 对象的示例代码
Field 对象的示例代码。以下是一个用 Visual Basic 编写的 ADO 代码示例,用于遍历一个 Recordset 对象,并打印每个 Field 对象的名称和值1:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI;"
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM Customers", cn, adOpenStatic, adLockReadOnly
' Loop through the Fields collection and print the name and value of each field.
For Each fld In rs.Fields
Debug.Print fld.Name & " = " & fld.Value
Next
rs.Close
cn.Close
(1) 字段对象 - ActiveX Data Objects (ADO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/sql/ado/guide/data/the-field-object?view=sql-server-ver16. (2) ADO Field 对象 | 菜鸟教程. https://www.runoob.com/ado/ado-ref-field.html. (3) Visual C++ ADO 编程 | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/visual-c-ado-programming. (4) Field 对象 - 数据访问对象 (DAO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/field-object-dao.
23、connection对象中有一个model参数,它有那些可选值?应用于那些场景?
Connection对象中的mode参数用于设置provider的访问权限1。它有以下几种可选值1:
- adModeUnknown:默认值,表示未设置访问权限。
- adModeRead:只读访问。
- adModeWrite:只写访问。
- adModeReadWrite:读写访问。
- adModeShareDenyRead:阻止其他用户读取数据源。
- adModeShareDenyWrite:阻止其他用户写入数据源。
- adModeShareExclusive:阻止其他用户访问数据源。
- adModeShareDenyNone:允许其他用户共享数据源。
这些值可以组合使用,例如,adModeReadWrite | adModeShareDenyNone 表示允许读写访问,并且允许其他用户共享数据源。
mode参数应用于需要控制对数据源的并发访问的场景,例如,当多个用户需要同时操作同一个数据库时,可以通过设置不同的mode参数来避免数据冲突或保护数据安全2。
(1) Spring Boot + RabbitMQ 配置参数解释 - 一叶落知天下秋 - 博客园. https://www.cnblogs.com/qts-hope/p/11242559.html. (2) ADO Connection 对象 - w3school. https://www.w3school.com.cn/ado/ado_ref_connection.asp. (3) Fetch API 的 mode 参数是用来干什么的? - 知乎. https://www.zhihu.com/question/417556981. (4) Wi-Fi 库 - ESP32 - — ESP-IDF 编程指南 latest 文档 - Espressif. https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/network/esp_wifi.html.
24、ADO 对象 实战示例 recordset 增删查改
ADO 对象的实战示例,着重讲解一下如何对 Recordset 对象的数据进行增删查改。以下是一个用 VBScript 编写的 ADO 代码示例,用于连接到一个 Access 数据库,并对 Customers 表进行操作2:
' 创建 Connection 对象并打开连接
Dim cn
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Northwind.mdb"
' 创建 Recordset 对象并打开 Customers 表
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Customers", cn, 3, 3 ' 3 表示 adOpenStatic 游标类型,3 表示 adLockOptimistic 锁定类型
' 查找 CustomerID 为 ALFKI 的记录
rs.Find "CustomerID='ALFKI'"
If Not rs.EOF Then ' 如果找到了
WScript.Echo "Company name: " & rs("CompanyName") ' 打印公司名称
End If
' 添加一条新记录
rs.AddNew ' 创建新记录
rs("CustomerID") = "ZHIHU" ' 设置字段值
rs("CompanyName") = "知乎"
rs.Update ' 保存更改
' 修改一条记录
rs.MoveFirst ' 移动到第一条记录
rs("CompanyName") = "知乎有限公司" ' 修改字段值
rs.Update ' 保存更改
' 删除一条记录
rs.MoveLast ' 移动到最后一条记录
rs.Delete ' 删除记录
' 关闭 Recordset 和 Connection 对象
rs.Close
cn.Close
' 释放对象
Set rs = Nothing
Set cn = Nothing
(1) ADO Recordset 对象 | 菜鸟教程. https://www.runoob.com/ado/ado-ref-recordset.html. (2) 字段对象 - ActiveX Data Objects (ADO) | Microsoft Learn. https://learn.microsoft.com/zh-cn/sql/ado/guide/data/the-field-object?view=sql-server-ver16. (3) 利用ADO.NET简单实现数据库的增删改查 - CSDN博客. https://blog.csdn.net/weixin_45768308/article/details/107098334. (4) Excel 及WPS VBA ADO Recordset记录集的Find方法与Seek方法的区别,别傻傻地分不清。 - 知乎. https://zhuanlan.zhihu.com/p/461144273.
25、结合field对象来对大量数据进行增删查改
使用 Field 对象来对大量数据进行增删查改的示例。根据我的搜索结果,以下是一个用 VBScript 编写的 ADO 代码示例,用于连接到一个 Access 数据库,并对 Products 表进行操作1:
' 创建 Connection 对象并打开连接
Dim cn
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Northwind.mdb"
' 创建 Recordset 对象并打开 Products 表
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Products", cn, 3, 3 ' 3 表示 adOpenStatic 游标类型,3 表示 adLockOptimistic 锁定类型
' 使用 Field 对象的 Value 属性来获取或设置字段的值
' 查找 ProductID 为 1 的记录
rs.Find "ProductID=1"
If Not rs.EOF Then ' 如果找到了
WScript.Echo "Product name: " & rs("ProductName").Value ' 打印产品名称
End If
' 添加一条新记录
rs.AddNew ' 创建新记录
rs("ProductID").Value = 78 ' 设置字段值
rs("ProductName").Value = "知乎茶"
rs.Update ' 保存更改
' 修改一条记录
rs.MoveFirst ' 移动到第一条记录
rs("ProductName").Value = "知乎茶叶" ' 修改字段值
rs.Update ' 保存更改
' 删除一条记录
rs.MoveLast ' 移动到最后一条记录
rs.Delete ' 删除记录
' 关闭 Recordset 和 Connection 对象
rs.Close
cn.Close
' 释放对象
Set rs = Nothing
Set cn = Nothing
(1) Element-ui框架实现对数据库的增删改查 - CSDN博客. https://blog.csdn.net/xYY_X_xYY/article/details/110846176. (2) MySQL基础操作(增删查改) ——实用篇_pylemon的博客-CSDN博客. https://blog.csdn.net/qq_27648991/article/details/80412395. (3) 增删查改 - 维基百科,自由的百科全书. https://zh.wikipedia.org/zh-cn/%E5%A2%9E%E5%88%AA%E6%9F%A5%E6%94%B9. (4) 增刪查改 - 维基百科,自由的百科全书. https://zh.wikipedia.org/wiki/%E5%A2%9E%E5%88%AA%E6%9F%A5%E6%94%B9.
26、关于 ADO 对象的一些建议:
- 在打开 Recordset 对象时,尽量指定游标类型和锁定类型,以提高性能和安全性。
- 在使用 Find 或 Seek 方法查找记录时,尽量使用索引字段,以提高查找速度。
- 在使用 AddNew 或 Update 方法添加或修改记录时,尽量使用 Field 对象的 Value 属性,以避免类型转换的错误。
- 在使用 Delete 方法删除记录时,尽量先移动到要删除的记录,以避免删除错误的记录。
- 在使用 GetRows 或 GetString 方法获取数据时,尽量指定要获取的字段和记录数,以节省内存空间。
猜你喜欢
- 2025-01-09 美媒:研究人员发现,只在上午喝咖啡似乎能起到最好的健康效果
- 2025-01-09 CNN主播:我无意冒犯,想问问泽连斯基精神状况
- 2025-01-09 明查|战火蔓延一周,澎湃为你核查出这些不实消息
- 2025-01-09 震惊一幕!美国洛杉矶郡快递运输火车遭洗劫,大量空盒子散布铁轨旁
- 2025-01-09 CNN:坏消息,新冠病毒去年底已开始在全球传播
- 2025-01-09 7岁熊孩子竟“破”了iPhone6 Plus的Touch ID
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)