我们都知道,线程要执行的方法不能接受任何参数,如果要传入方法特定条件,可以将方法放在一个类中,在类中定义类的属性,需要时可以设置类的属性,然后用方法调用这些属性以实现方法参数类似的功能。
#T#ADO.NET提供了一个统一的编程模式和一组公用的类来进行任何类型的数据访问,而不管你用何种语言来开发代码。ADO.NET是全新的,但又与ADO 尽可能保持一致,它使编程模式从一个客户端/服务器、基于连接的模式转变到了一个新的模式,这个新模式可以让断开的前端下载记录、离线工作、然后重新连接来提交变化。ADO.NET是WinForms应用程序、ASP.NET应用程序和Web services的一个共有的特点。其功能可以跨LAN和 Internet连接来实现,可以在有状态(stateful)和无状态(stateless)情况下实现。
这里把我在工作中的一点经验分享给大家,帮大家解决遇到的问题。我们利用VB.NET数据库访问封装成类,因为生成的线程在主应用程序线程之外运行,.net Framework提供线程隔离,这时如果要用新的线程操纵主应用程序中的对象便不被允许。***的办法也是将线程要访问的对象包装在类中。下面我们创建一个类,封装属性和VB.NET数据库访问方法:
- Public Class dealDataBase
- Private m_sqlDataAdapter As SqlDataAdapter
- Private m_table As DataTable
- Public Property setDataAdapter() As SqlDataAdapter
- Get
- setDataAdapter=m_sqlDataAdapter
- End Get
- Set(ByVal value As SqlDataAdapter)
- m_sqlDataAdapter=value
- End Set
- End Property
- Public Property setDataTable() As DataTable
- Get
- setDataTable=m_table
- End Get
- Set(ByVal value As DataTable)
- m_DataTable=value
- End Set
- End Property
- Public sub GetDataFromDataBase()
- …
- m_table.Clear()
- m_sqlDataAdapter.Fill(m_table)
- …
- End Sub
- End Class
下面是创建线程并运行线程的代码:
- Dim myDB As New dealDataBase ()
- Dim myThreadStart as ThreadStart
- Dim myThread as Thread
- myDB.setDataAdapter=Me.DataAdapter1 'DataAdapter1是本窗体内定义的数据适配器
- myDB.setDataTable=Me.DataTable1 'DataTable1是本窗体定义的数据表
- …
- myThreadStart=New ThreadStart(AddressOf myDB.GetDataFromDataBase)
- myThread=New Thread(myThreadStart)
- myThread.Start()
- …
- End Sub
以上就是关于VB.NET数据库访问问题上解决的一个方法,是不是很简单啊。