五分钟知道ADO.NET异步查询

ADO.NET经过长时间的发展,很多用户都很了解ADO.NET了,这里我发表一下个人理解,和大家讨论讨论。ADO.NET数据库提供程序包含Connection、Command、DataAdapter和DataReader对象。在一般的ADO.NET编程中,首先要创建Connection对象,给它提供需要的信息,例如连接字符串。然后创建一个Command对象,给它提供要执行的SQL命令的细节。这个命令可以是内置的SQL文本命令、存储过程或对表的直接访问。如果需要,还可以为这些命令提供参数。

鸡东ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

#T#在创建Connection和Command对象后,就必须确定命令是否返回结果集。如果命令不返回结果集,就可以通过调用几个Execute方法之一,执行命令。另一方面,如果命令返回结果集,就必须确定是否要保留结果集,以备将来在不维持与数据库的连接的情况下使用。如果要保留结果集,就必须创建一个DataAdapter对象,用它填充DataSet或DataTable对象。这些对象可以在断开连接的模式下维护其中的信息。但是,如果不想保留结果集,只是要以快速方式执行命令,就可以使用Command对象创建DataReader对象。DataReader对象需要与数据库的实时连接,它是一个只向前的只读光标。下面我们来看一个关于使用ADO.NET异步查询的案例。

使用ADO.NET异步查询,并将查询结果呈现在指定的Form的DataGridView中

 
 
  1. Public Class Asynchronous  
  2. Private Delegate Sub MainInvoke(ByVal TableItems() As String, ByVal RowCount As Integer) '委托  
  3. Delegate Sub AsyncMethodCaller()  
  4. Public connstr As String  
  5. Public cmdstr As String  
  6. Public frm As Form ' 指定的form  
  7. Public dgv As DataGridView ' 指定的datagridview  
  8. Public statuscontrol As Control ' 显示状态的控件  
  9. Public message As String'状态提示文本  
  10.  
  11. Private Sub CallbackHandler()  
  12. Using conn As New SqlConnection(connstr), cmd As New SqlCommand(cmdstr, conn)  
  13. conn.Open()  
  14. Using reader As SqlDataReader = cmd.ExecuteReader  
  15. Dim i As Integer  
  16. Dim items(dgv.Columns.Count - 1) As String  
  17. While reader.Read()  
  18. For j As Int32 = 0 To dgv.Columns.Count - 1  
  19. items(j) = reader(dgv.Columns(j).HeaderText)  
  20. Next  
  21. frm.Invoke(New MainInvoke(AddressOf Addrows), items, i)  
  22. i += 1  
  23. End While  
  24. End Using  
  25. conn.Close()  
  26. End Using  
  27. End Sub  
  28.  
  29. Public Sub getdatabase()  
  30. Dim caller As New AsyncMethodCaller(AddressOf CallbackHandler)  
  31. Dim result As IAsyncResult = caller.BeginInvoke(AddressOf StopRead, caller)  
  32. End Sub  
  33.  
  34. Private Sub Addrows(ByVal TableItems() As String, ByVal row As Integer) '添加新行,并显示处理进度  
  35. dgv.Rows.Add()  
  36. For i As Int32 = 0 To TableItems.Length - 1  
  37. dgv.Rows(row).Cells(i).Value = TableItems(i)  
  38. Next  
  39. If statuscontrol IsNot Nothing Then statuscontrol.Text = message & row  
  40. End Sub  
  41.  
  42. Private Sub StopRead(ByVal ar As IAsyncResult)  
  43. Dim caller As AsyncMethodCaller = CType(ar.AsyncState, AsyncMethodCaller)  
  44. caller.EndInvoke(ar)  
  45. End Sub  
  46. End Class  

ADO.NET异步查询使用方法:

 
 
  1. DataG.Columns.Add("编号", "编号")  
  2. DataG.Columns.Add("时间", "时间")  
  3. DataG.Columns.Add("用户名", "用户名")  
  4.  
  5. Dim newselect As New Asynchronous  
  6. newselect.connstr = "SERVER=x;DATABASE=x;USER=x;PASSWORD=x;Asynchronous Processing=true" 
  7. newselect.cmdstr = "select * from log" 
  8. newselect.frm = Me 
  9. newselect.dgv = DataG 
  10. newselect.statuscontrol = Me 
  11. newselect.message = "数据检索中..." 
  12. newselect.getdatabase()  

名称栏目:五分钟知道ADO.NET异步查询
浏览地址:http://www.mswzjz.com/qtweb/news30/206930.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联