【发布时间】:2014-02-05 11:57:26
【问题描述】:
我正在回顾我编写并重构的 vb.net 中的一些代码,我正在尝试使其更加面向对象,因为我正在尝试自学更好的编码实践。我有一段特定的代码在整个应用程序中重复了很多次,基本结构并没有真正改变,只是有时可能有更多或更少的参数(函数内的代码):
Public Function EditTest(ByVal test_id As Integer) As DataTable
Dim con As OleDbConnection = New OleDbConnection(FileLocations.connectionStringNewDb)
Dim cmd As New OleDbCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "Q_EDIT_TEST"
cmd.Parameters.Add("@Parameter1", OleDbType.Integer).Value = test_id
cmd.Connection = con
con.Open()
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim ds As DataSet = New DataSet()
da.Fill(ds, "editTest")
Dim rtable_ As DataTable = ds.Tables("editTest")
con.Close()
Return rtable_
End Function
我想通过创建一个基于类的新对象来将面向对象引入其中? “DatabaseData”让我们调用这个类,它的创建参数(在这个例子中)是我要运行的查询的名称(Q_EDIT_TEST)和我要添加到它的参数(这是我在发现它很棘手)。上面的例子我有 1 个参数,如果我想创建一个有 2 个参数的对象怎么办? 3个参数?等等。谁能告诉我一个如何实现的例子?干杯!
好吧,请多多包涵 :-) 还在学习:
Public Class DatabaseData
Property queryName As String
Dim con As OleDbConnection = New OleDbConnection(FileLocations.connectionStringNewDb)
Dim cmd As OleDbCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = queryName
End Class
cmd.CommandType 抛出错误:
“应有错误 1 声明。”
好的,这就是我目前所拥有的,我知道它不起作用,但我在正确的轨道上吗?还是我疯了,有没有更好的方法来做到这一点......
Imports System.Data.OleDb
Imports System.Data.SqlClient
Module PureClassClasses
Public Class Params
Property myParams As New List(Of customParam)
Class customParam
Property Name As String
Property Value As OleDbType
End Class
End Class
Public Class DataGetter
Private queryName As String
Private listOfParams As List
Private rtable As DataTable
Public Sub New(ByVal Qn As String, ByVal paramList As List)
queryName = Qn
listOfParams = paramList
End Sub
ReadOnly Property ReturnedData(ByVal queryName As String, ByVal listOfParams) As DataTable
Get
Dim conn As OleDbConnection = New OleDbConnection(FileLocations.connectionStringNewDb)
Dim cmd As New OleDbCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = queryName
'cmd.Parameters.Add("@Parameter1", OleDbType.Integer).Value = test_id <-- HELP?
'cmd.Parameters.Add("@Parameter2", OleDbType.Integer).Value = test_id <-- HELP?
cmd.Connection = conn
conn.Open()
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim ds As DataSet = New DataSet()
da.Fill(ds, "returnedData")
Dim rtable_ As DataTable = ds.Tables("returnedData")
conn.Close()
Return rtable
End Get
End Property
End Class
End Module
我希望能够将其称为...
Dim p As New Params
Dim cp As New Params.customParam
cp = new customParam
cp.name = "My First Param"
cp.type = OleDbType.Integer
cp.value = 5
p.myparams.add(cp)
Dim myDataTable As New DataTable
myData = new DataGetter
myDataTable = myData.ReturnData("Q_A_QUERY", listofparams)
这有意义吗... :S
【问题讨论】: