自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五分鐘知道ADO.NET異步查詢

開(kāi)發(fā) 后端
這里就使用ADO.NET異步查詢,并將查詢結(jié)果呈現(xiàn)在指定的Form的DataGridView中,文章有詳細(xì)的代碼分析,希望對(duì)大家有幫助。

ADO.NET經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,很多用戶都很了解ADO.NET了,這里我發(fā)表一下個(gè)人理解,和大家討論討論。ADO.NET數(shù)據(jù)庫(kù)提供程序包含Connection、Command、DataAdapter和DataReader對(duì)象。在一般的ADO.NET編程中,首先要?jiǎng)?chuàng)建Connection對(duì)象,給它提供需要的信息,例如連接字符串。然后創(chuàng)建一個(gè)Command對(duì)象,給它提供要執(zhí)行的SQL命令的細(xì)節(jié)。這個(gè)命令可以是內(nèi)置的SQL文本命令、存儲(chǔ)過(guò)程或?qū)Ρ淼闹苯釉L問(wèn)。如果需要,還可以為這些命令提供參數(shù)。

#T#在創(chuàng)建Connection和Command對(duì)象后,就必須確定命令是否返回結(jié)果集。如果命令不返回結(jié)果集,就可以通過(guò)調(diào)用幾個(gè)Execute方法之一,執(zhí)行命令。另一方面,如果命令返回結(jié)果集,就必須確定是否要保留結(jié)果集,以備將來(lái)在不維持與數(shù)據(jù)庫(kù)的連接的情況下使用。如果要保留結(jié)果集,就必須創(chuàng)建一個(gè)DataAdapter對(duì)象,用它填充DataSet或DataTable對(duì)象。這些對(duì)象可以在斷開(kāi)連接的模式下維護(hù)其中的信息。但是,如果不想保留結(jié)果集,只是要以快速方式執(zhí)行命令,就可以使用Command對(duì)象創(chuàng)建DataReader對(duì)象。DataReader對(duì)象需要與數(shù)據(jù)庫(kù)的實(shí)時(shí)連接,它是一個(gè)只向前的只讀光標(biāo)。下面我們來(lái)看一個(gè)關(guān)于使用ADO.NET異步查詢的案例。

使用ADO.NET異步查詢,并將查詢結(jié)果呈現(xiàn)在指定的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 ' 顯示狀態(tài)的控件  
  9. Public message As String'狀態(tài)提示文本  
  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) '添加新行,并顯示處理進(jìn)度  
  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("編號(hào)", "編號(hào)")  
  2. DataG.Columns.Add("時(shí)間", "時(shí)間")  
  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 = "數(shù)據(jù)檢索中..." 
  12. newselect.getdatabase()  


 

責(zé)任編輯:田樹(shù) 來(lái)源: 博客
相關(guān)推薦

2009-11-04 16:13:18

ADO.NET數(shù)據(jù)表

2009-10-29 11:39:52

ADO.NET連接池

2009-11-11 16:08:21

ADO.NET數(shù)據(jù)服務(wù)

2009-11-12 09:16:15

ADO.NET數(shù)據(jù)庫(kù)連

2009-11-04 17:18:34

ADO.NET連接池

2009-11-03 15:47:10

ADO.NET數(shù)據(jù)異步

2009-11-12 16:04:42

ADO.NET對(duì)象查詢

2009-12-29 10:26:43

ADO.NET實(shí)體框架

2009-11-04 09:43:45

ADO.NET Dat

2010-01-04 17:27:15

ADO.NET異步操作

2010-05-06 08:55:23

ADO.NET

2009-12-28 15:11:36

ADO.NET專家

2009-11-03 16:37:10

2009-11-05 10:56:31

WCF通訊

2009-10-21 18:19:36

VB.NET實(shí)現(xiàn)拖放

2009-10-26 15:45:43

VB.NET類構(gòu)造

2009-12-21 13:51:54

ADO.NET處理

2009-09-14 13:37:25

LINQ ADO.NE

2009-10-30 13:12:40

VB.NET創(chuàng)建類

2009-12-30 09:10:04

ADO.NET Ent
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)