Мое текущее приложение использует слой доступа к данным на основе экземпляра. Я создаю экземпляр слоя со строкой соединения. Затем я вызываю метод, который выполняет какую-то команду. Например, есть метод, который заполнит набор данных. По сути, я передаю хранимую процедуру и любые параметры SQL и получаю обратно набор данных. Лучше иметь статический класс для обработки моего доступа к данным или на основе экземпляра? У меня есть слой Domain с объектами, но я не отображаю объекты, как ORM. Я передаю объекты на фабрики, которые затем создают экземпляр уровня данных для извлечения набора данных. Затем я сопоставляю набор данных с объектом. Я планирую обновить свое приложение (и да, перейти на C #), но у меня нет времени, чтобы изменить все это. Я делаю то же самое для вставок обновлений и удалений. Если то, что я делаю, пока нормально, дайте мне знать. Видите ли вы какие-либо проблемы с этим подходом? В противном случае, что я должен делать? Я не писал этот класс. Я нашел его в Интернете и подумал, что это то, что мне нужно.
Вот пример класса данных:
Public Sub New(ByVal connectionString As String)
_connectionString = connectionString
End Sub
Public Function FillDataset(ByVal cmd As String, ByVal cmdType As CommandType, Optional ByVal parameters() As SqlParameter = Nothing) As DataSet
Dim connection As SqlConnection = Nothing
Dim command As SqlCommand = Nothing
Dim sqlda As SqlDataAdapter = Nothing
Dim res As New DataSet
Try
connection = New SqlConnection(_connectionString)
command = New SqlCommand(cmd, connection)
command.CommandType = cmdType
AssignParameters(command, parameters)
sqlda = New SqlDataAdapter(command)
sqlda.Fill(res)
Catch ex As Exception
'CreateDataEntry(ex, WriteType.ToFile, cmd)
Finally
If Not (connection Is Nothing) Then connection.Dispose()
If Not (command Is Nothing) Then command.Dispose()
If Not (sqlda Is Nothing) Then sqlda.Dispose()
End Try
Return res
End Function
Public Function ExecuteNonQuery(ByVal spname As String, ByVal ParamArray parameterValues() As Object) As Object
Dim connection As SqlConnection = Nothing
Dim command As SqlCommand = Nothing
Dim res As Object = Nothing
Try
connection = New SqlConnection(_connectionString)
command = New SqlCommand(spname, connection)
command.CommandType = CommandType.StoredProcedure
command.Parameters.AddRange(parameterValues)
connection.Open()
command.ExecuteNonQuery()
res = command.Parameters(command.Parameters.Count - 1).Value
Catch ex As Exception
CreateDataEntry(ex, WriteType.ToFile, spname)
If Not (transaction Is Nothing) Then
transaction.Rollback()
End If
Finally
If Not (connection Is Nothing) AndAlso (connection.State = ConnectionState.Open) Then connection.Close()
If Not (command Is Nothing) Then command.Dispose()
End Try
Return res
End Function