- 浏览: 206102 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (137)
- Android (12)
- linux (9)
- rails (3)
- 经验总结 (39)
- 工作、项目 (9)
- 生物信息,blast (2)
- java (12)
- 论点 (1)
- sql (9)
- javascript (1)
- vb (8)
- 发布的程序 (1)
- 感动编程 (1)
- asp (3)
- excel (1)
- iis (1)
- access (2)
- matlab 图像 (2)
- matlab (2)
- jQuery (2)
- MAMP PRO (1)
- orcal mac os python (1)
- regular expression (1)
- linux grep awk (1)
- numpy (1)
- h5py (1)
- Heritrix (1)
- servlet (1)
- hadoop (1)
- copyFromLocal (1)
- 气象 (0)
最新评论
-
xiaoyao3857:
这是什么原理呢?还有,为什么我设好之后,运行appletvie ...
警告:不能读取 AppletViewer 的属性文件解决 -
阿浊I:
I think so,this work had done a ...
How to change max_allowed_packet value in mysql? -
zhuorulin:
丁林.tb 写道 If you don't use globa ...
How to change max_allowed_packet value in mysql? -
丁林.tb:
If you don't use global or use ...
How to change max_allowed_packet value in mysql?
FetchProgress 事件可为您提供对记录集可用于向用户显示进度指示器的当前状态的信息。
完成记录集时激发 FetchComplete 事件加载。
更多信息
系统必备组件软件要求 FetchProgress 和 FetchComplete 事件在 MDAC 2.5 或更高版本中只工作正常。 您可以从下面的 Micro...
系统必备组件
-
FetchProgress 和 FetchComplete 事件在 MDAC 2.5 或更高版本中只工作正常。 您可以从下面的 Microsoft 网站下载最新版本的 Microsoft 数据访问组件:
Microsoft Data Access Components (http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp)
- 如果您正在开发中 Microsoft Visual Studio 6.0 应用程序,您必须具有 service pack 3 或更高版本已安装。 您可以安装最新的 service pack,Microsoft Visual Studio 6.0 为从下面的 Microsoft 网站:
Visual Studio Product Updates (http://msdn.microsoft.com/vstudio/downloads/updates.asp)
编码要求
- 当您打开记录集时,您必须为记录集选项指定 adAsyncFetch。
- 您必须使用客户端游标,因为由 ActiveX 数据对象 (ADO) 客户端游标引擎返回 FetchProgress 和 FetchComplete 事件。
- 在 Visual Basic 必须声明在模块级别用 WithEvents 关键字使用 Dim Recordset。
属性
有两个影响 ADO 的异步行为的记录集属性。 应能打开记录集之前设置这些属性。
- 提取的初始大小 决定之前创建异步线程同步被提取多少条记录。 这允许小型的记录集,以创建无需创建一个线程的额外开销。 默认情况下,这是设置为 50。 若要保证称为 FetchProgress 和 FetchComplete,请将此值设置为 0。
- 背景抓取大小 确定多少条记录被提取到 FetchProgress 事件调用之间。 默认情况下,这是设置为 15。
事件
FetchProgress
FetchProgress 具有四个参数:
-
进度 是当前记录集中的记录数。
第一次调用 FetchProgress,进度是等于初始提取大小加上背景抓取的大小。 对于每个附加的调用进度等于以前的值加上背景抓取大小。 -
MaxProgress 是要返回预期的最大值。
MaxProgress 不等于实际将返回的记录数。 ADO 具有提取记录以获取此值。 这意味着 MaxProgress 以往任何时候都只是最佳猜测。 MaxProgress 通常等于进度加上背景抓取的大小。
FetchProgess 始终调用 FetchComplete 之前调用。 在这种情况下进度和 MaxProgress 是为彼此相等。 此 MaxProgress 等于实际的检索的记录数。 -
adStatus 的值确定是否发生了任何错误。 此值通常是 adStatusOK。
您可能会通过 adStatus 的值设置为值 adStatusUnwantedEvent 禁用 FetchProgress 事件。 - pRecordset 是对该记录集本身的引用。
FetchComplete
FetchComplete 具有三个参数:
- 如果 adStatus adStatusErrorsOccurred,您可以检查以确定发生了什么错误 pError。 如果您的代码调用 Cancel 方法执行查询之前,可能会发生这种情况例如执行。
-
adStatus 的值确定是否发生了任何错误。
您可能会通过 adStatus 的值设置为值 adStatusUnwantedEvent 禁用 FetchComplete 事件。 - pRecordset 是对该记录集本身的引用。
示例代码
下面的示例演示如何使用 Visual Basic 中的 FetchProgress 和 FetchComplete 事件。
该示例使用名为 Pubs 一个 ODBC 数据源连接到附带 SQL Server 的 Pubs 数据库。
- 在 Microsoft Visual Basic,创建新的 标准 EXE。 默认情况下,Form1 添加到项目。
- 在 项目 菜单上单击选择 引用,然后选择 Microsoft ActiveX 数据对象库。
- 在 项目 菜单上单击以选择 组件,然后选择 Microsoft DataGrid 控件 6.0 (OLEDB)。
- 将一个 DataGrid、 一个 文本框 中和 命令按钮 拖到 Form1 上。
- 下面的代码添加到 Form1 的 代码 窗口:
Option Explicit Const strConn = "DSN=Pubs" Const strDefaultSQL = "SELECT * FROM Titles" Dim cn As ADODB.Connection Dim WithEvents rs As ADODB.Recordset Private Sub Form_Load() Command1.Caption = "Go" Text1.Text = strDefaultSQL Set cn = New ADODB.Connection cn.Open strConn End Sub Private Sub Command1_Click() Dim strSQL As String strSQL = Text1.Text Set rs = New ADODB.Recordset With rs .CursorLocation = adUseClient .Properties("Initial Fetch Size") = 2 .Properties("Background Fetch Size") = 4 Debug.Print "Start" Debug.Print "Initial Fetch Size: " & _ .Properties("Initial Fetch Size") Debug.Print "Background Fetch Size" & _ .Properties("Background Fetch Size") .Open strSQL, cn, , , adAsyncFetch End With End Sub Private Sub rs_FetchProgress(ByVal Progress As Long, _ ByVal MaxProgress As Long, _ adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) Debug.Print "Fetch: " & Progress & _ " Max: " & MaxProgress End Sub Private Sub rs_FetchComplete(ByVal pError As ADODB.Error, _ adStatus As ADODB.EventStatusEnum, _ ByVal pRecordset As ADODB.Recordset) If adStatus <> adStatusOK Then Debug.Print "Failed" Debug.Print "Error: " & pError.Number & " - " & pError.Description Else Set DataGrid1.DataSource = pRecordset Debug.Print "Done" End If End Sub
- strConn 改为您的数据库有效的连接字符串和 strDefaultSQL 更改为有效的 SQL 查询从数据库返回的记录。
- 运行代码。 单击 搜索 按钮开始读取记录集。 在 视图 菜单上单击以选择 即时 窗口。 Visual Basic 立即窗口显示异步查询的进度。
*********************************************************
试了不行
下面的行
' WithEvents 關鍵字宣告物件類別的變數。
' 引發事件的物件稱作事件來源 (event source),來處理事件來源所引發的事件。
' WithEvnets 用來對應 ActiveX 物件所引發的事件。僅適用於物件類別模組。
' 您可以用 WithEvents 來個別宣告變數,但不可用來建立陣列,也不可與 New 同時使用。
Dim WithEvents cn As ADODB.Connection
Dim WithEvents Recordset物件 As ADODB.Recordset
Private Sub cn_ConnectComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)
' 資料庫連線建立完成會觸發 ConnectComplete 事件
End Sub
Private Sub cn_Disconnect(adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)
' 中斷資料庫連線會觸發 Disconnect 事件
End Sub
Private Sub cn_ExecuteComplete(ByVal RecordsAffected As Long, _
ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pCommand As ADODB.Command, _
ByVal pRecordset As ADODB.Recordset, _
ByVal pConnection As ADODB.Connection)
' 當 Connnection 物件使用 Execute 方法執行 SQL 命令完成時會觸發 ExecuteComplete 事件
End Sub
Private Sub Form_Load() ' 表單載入事件
OpenCN ' 開啟資料庫連線
End Sub
Private Sub OpenCN() ' 開啟資料庫連線 ; Connection 的非同步執行
Dim strCN As String
' 因為使用 WithEvents , 所以必須再使用 New 關鍵字來建立一個物件類別的新執行個體
Set cn = New ADODB.Connection
' 資料庫連線字串
strCN = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:/XXOO/ABC.mdb;Persist Security Info=False"
With cn
'CursorLocation 屬性 , 設定或傳回資料指標服務的位置‧
'adUseClient 使用本端資料指標程式庫所提供的用戶端資料指標‧
' 本端資料指標服務通常具備多項驅動程式之資料指標所沒有的功能,
' 因此,就可以啟動的功能而言,使用這個設定值有其優點‧對於往後追溯相容性,
' 同義字的 adUseClientBatch 也受支援‧
'adUseServer 預設值‧使用資料提供者或驅動程式提供者所提供的資料指標‧
' 這些指標有時候具有很大的彈性,可容許他人對資料源所做的變更‧
' 然而,Microsoft Client Cursor Provider (例如不相關的 Recordset) 的某些功能,
' 無法用伺服端的資料指標來模擬,因而在這個設定值下不能使用這些功能‧
.CursorLocation = adUseClient
'adConnectUnspecified (預設值) 同步化建立連線。
'adAsyncConnect 非同步化建立連線。可以使用 ConnectComplete 事件來確定連線資料庫是否完成。
.Open strCN, , , adAsyncConnect
End With
'adStateClosed 資料庫連線狀態為關閉
'adStateOpen 資料庫連線狀態為開啟
Do Until cn.State = adStateOpen
' Do Loop 迴圈是為了等待資料庫連線建立完成
' 若無此迴圈 , 則程式將繼續往下執行 (資料庫連線會繼續非同步的執行建立),
' 而不等待資料庫的連線建立是否完成
DoEvents
Loop
End Sub
Private Sub OpenRS() ' 開啟資料錄(集) ; Connection 的非同步執行
' 常數 說明
' adCmdText 表示提供者會將 Source 評估為指令的文字定義。
' AdCmdTable 表示 ADO 會產生一個 SQL 查詢,從 Source 中指定的資料表傳回所有資料列。
' AdCmdTableDirect 表示提供者會從 Source 中指定的資料表傳回所有資料列。
' AdCmdStoredProc 表示提供者會將 Source 評估為一個預存程序。
' AdCmdUnknown 表示 Source 引數中未知的指令類型。
' AdCmdFile 表示保留的 (已儲存的) Recordset 會從 Source 中指定的檔案還原。
' AdAsyncExecute 表示 Source 作非同步執行。
' AdAsyncFetch 表示在 Initial Fetch Size 屬性中指定的初始數量被抓取後,剩下的資料列就會被非同步地抓取。
' 如果所需的資料列未被抓取,則會凍傷主要的執行緒,直到取得所需的資料列。
' AdAsyncFetchNonBlocking 表示在抓取時,絕不凍結主執行緒。
' 如果未抓取到所需的資料列,則目前的資料列會自動移到檔案的尾端。
Set Recordset物件 = Connection物件.Execute(SQL語法, , adAsyncExecute)
Do Until Recordset物件.State = 1 ' Recordset 的開啟(執行)狀態
DoEvents
Loop
End Sub
Private Sub Recordset物件_FetchComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)
' 當非同步動作將所有的資料錄取至(傳入)Recordset 便會觸發此事件。
End Sub
发表评论
-
pygrib basemap matlibplot环境安装
2017-07-14 10:47 0话不多说,直奔主题 我是再suse下离线安装的,所以搞得 ... -
spring 定时任务
2015-09-16 12:44 1003这里使用的是Spring2.5,需要的jar包:spring ... -
三年博士干的事
2014-12-22 10:08 736见附件墙报 所谓的利用matlab,c++,php,基于 ... -
文本分类入门(番外篇)特征选择与特征权重计算的区别
2013-05-22 09:02 2015在文本分类的过程中 ... -
文本分类入门(十一)特征选择方法之信息增益
2013-05-22 09:03 1747前文提到过,除了开方检验(CHI)以外,信息增益(IG ... -
SVM入门(十)将SVM用于多类分类
2013-05-22 09:03 867从 SVM的那几张图可以看出来,SVM是一种典型的两类 ... -
SVM入门(九)松弛变量(续)
2013-05-22 09:03 746接下来要说的东西其实不是松弛变量本身,但由于是为了使用 ... -
SVM入门(八)松弛变量
2013-05-22 09:03 1002现在我们已经把一个 ... -
SVM入门(七)为何需要核函数
2013-05-19 16:27 930生存?还是毁灭?——哈姆雷特 可分?还是不可分?——支持 ... -
SVM入门(六)线性分类器的求解——问题的转化,直观角度
2013-05-19 16:26 904让我再一次比较完整 ... -
SVM入门(五)线性分类器的求解——问题的描述Part2
2013-05-19 16:25 836从最一般的定义上说 ... -
SVM入门(四)线性分类器的求解——问题的描述Part1
2013-05-19 16:25 856上节说到我们有了一个线性分类函数,也有了判断解优劣的标准— ... -
SVM入门(一)至(三)Refresh
2013-05-19 16:24 844(一)SVM的八股简介 ... -
matlab文件及文件夹操作
2013-02-23 13:07 84501.matlab中读取一行多个 ... -
matlab 矩阵求和计算
2012-11-10 12:50 1853matlab中针对的数据大多是以矩阵形式来处理,求和函数是su ... -
vb动态数组
2012-07-19 21:28 957最近老板逼着弄GIS ,找到了mapobject是空间,使用过 ... -
关于 surfaceview 背景覆盖的问题
2012-02-16 15:18 2996本人开发过程中,发现出了黑色,不能设置其他颜色,如果设置了,就 ... -
关于 Failed to start monitoring 0A3AAA401902A029 错误
2012-02-12 10:07 2244在android开发的时候,在前面的文章中有说到连接真机开发, ... -
两个activity之间的Intent 传值
2012-02-11 23:32 1820看了很多,总结以下首先activity1和activity2之 ... -
VB中的图像用HScroll1,VScroll1 空间如何操作
2006-03-27 18:06 1170试过了,绝对正确的哦,呵呵,前提是图像要足够大的看不到,然后才 ...
相关推荐
本教程主要关注使用C#语言通过ADO.NET来操作SQL Server数据库,这包括了教学演示案例、上机练习参考答案以及课后作业参考答案,旨在帮助学习者深入理解和掌握这项技术。 首先,ADO.NET是由微软开发的一套数据访问...
在实际应用中,直接使用 ADO 的原生 API 可能会比较繁琐,尤其是对于一些常见的操作,如建立连接、执行查询等。因此,对 ADO 进行封装以简化开发流程是非常必要的。本文档介绍了一个经过改进的 ADO 封装类库,旨在...
### Lotus Notes 使用 ADO 访问 SQL 数据库详解 #### 一、背景介绍 在企业级应用开发中,Lotus Notes 是一款集成了电子邮件、日程管理、文档管理等多种功能的应用平台,它允许开发者创建复杂的企业级应用程序。而 ...
以下是对ADO.NET使用方法和用法的详细解释: 1. **数据库连接**:ADO.NET通过`System.Data.SqlClient.SqlConnection`类来建立与SQL Server数据库的连接。连接字符串是设置数据库连接的关键,包括服务器名、数据库名...
本篇文章将深入探讨如何使用ADO.NET(一种.NET框架中的数据访问技术)与DB2数据库进行连接,从而实现数据操作。 首先,了解ADO.NET的基本概念是非常必要的。ADO.NET提供了一种结构化的编程模型,允许开发者高效地...
5. `Query.cpp`:这个文件可能包含执行SQL查询的代码,展示了如何使用ADO的Command对象来构建和执行查询。 6. `StatLink.cpp, IStudent.cpp, Student.cpp`:这些可能包含了自定义的接口(IStudent)、类(Student)...
ADO 简介与应用(重点介绍 ADO 对象) ...ADO 的使用需要遵守一定的规则和协议,例如在使用 ADO 对象时,需要先创建 Connection 对象,接着创建 Recordset 对象,然后使用 Command 对象执行存储过程。
6. **ADO扩展**:除了基础的ADO组件,还有其他扩展,如ADODB.Stream用于处理二进制流数据,ADODB.Record用于操作单个记录,以及RDS(Remote Data Service)用于客户端与服务器间的数据同步。 7. **ADO编程模型**:...
这篇文章将深入探讨使用 ADO.NET 的最佳实践和经验分享。 首先,了解.NET Framework 是至关重要的。它是微软的开发平台,提供了丰富的类库,包括 ADO.NET,用于构建各种类型的应用程序。.NET Framework 数据提供者...
- **ADO_05.ppt** 可能涉及到DataSet的离线操作,以及如何处理数据更改并同步回数据库。 - **ADO_06.ppt** 可能讲解了Parameterized Queries(参数化查询)和Stored Procedures(存储过程)的使用,以提高安全性并...
在实际项目中,使用这样的C++ ADO封装类可以显著提高开发效率,降低代码复杂性。MYADO这个文件可能是封装类的实现,包括头文件(.h)和源文件(.cpp),通过阅读和理解这些文件,我们可以了解具体如何使用和定制这个...
重点讨论了ado.net如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问api(包括ole db,ado,odbc和jdbc)的程序员,提供了帮助其迁移到ado.net许多易用的...
通过使用SelectCommand、InsertCommand、UpdateCommand和DeleteCommand,可以轻松执行CRUD(创建、读取、更新和删除)操作。 7. **数据实体框架(Entity Framework):** - 虽然不在原始的ADO.NET中,但后来发展出...
它管理DataSet与数据库之间的数据交换,包括使用SqlCommand对象执行SELECT、INSERT、UPDATE和DELETE命令。 6. **DataTable**: 是DataSet的一部分,它模拟了数据库表的行为。可以添加、删除、修改记录,并通过...
DataAdapter是ADO.NET与数据库之间通信的桥梁,它负责填充DataSet,并将DataSet中的更改同步回数据库。使用SelectCommand、InsertCommand、UpdateCommand和DeleteCommand对象,你可以定义如何从数据库中获取数据,...
在课程的后续部分,学生将学习如何创建和管理ADO.NET对象,包括建立和管理连接、编写和执行SQL命令、使用DataAdapter填充数据集以及更新数据库。还会涉及数据绑定和用户界面的交互,使数据能够以用户友好的方式呈现...
它使用Command对象执行SQL命令,并将结果填充到DataSet中,或者将DataSet中的更改同步回数据库。 5. **DataSet和DataTable**:DataSet是ADO.NET中一个内存中的数据缓存,可以理解为轻量级的数据库。它包含一个或多...
3. 使用Command对象的ExecuteReader()方法获取DataReader,或者ExecuteNonQuery()方法执行非查询操作。 4. 如果需要离线数据处理,可以使用DataAdapter填充DataSet或DataTable。 5. 执行数据操作后,关闭DataReader...
课程可能涵盖如何使用DataAdapter进行数据的填充和更新,以及理解填充分页和同步数据的策略。 通过这个系列的学习,开发者不仅可以掌握ADO.NET的基本操作,还能了解到最佳实践和性能优化技巧,对于开发高效、安全的...
本章主要介绍了如何使用ADO.NET来访问数据库,主要包括以下几个关键对象: 1. **数据库连接对象(Connection)**:`Connection`对象是ADO.NET中的基础,用于建立和管理与数据库的连接。`ConnectionString`属性是连接...