请看一看类和键入如下:VB.NET - 单类,多种用途?
Imports System.Data.SqlClient
Public Class c1
Dim PersonID As Integer
Public Sub New(ByVal Person As Person)
PersonID = Person.PersonID
End Sub
Public Sub New()
End Sub
Private Sub SingleDelete()
Dim objCommand As SqlCommand
Dim objCon As SqlConnection
Try
Dim _ConString As String = "Data Source=IANSCOMPUTER;Initial Catalog=Test;Integrated Security=True;MultipleActiveResultSets=true"
objCon = New SqlConnection(_ConString)
objCommand = New SqlCommand("Delete FROM Person were id=" & PersonID)
objCommand.Connection = objCon
objCon.Open()
objCommand.ExecuteNonQuery()
Catch ex As Exception
Throw
Finally
End Try
End Sub
Private Sub MassDelete(ByVal listPerson As List(Of Person))
Dim objCommand As SqlCommand
Dim objCon As SqlConnection
Try
Dim _ConString As String = "Data Source=IANSCOMPUTER;Initial Catalog=Test;Integrated Security=True;MultipleActiveResultSets=true"
objCon = New SqlConnection(_ConString)
For Each Person In listPerson
objCommand = New SqlCommand("Delete FROM Person were id=" & Person.PersonID)
objCommand.Connection = objCon
objCon.Open()
objCommand.ExecuteNonQuery()
Next
Catch ex As Exception
Throw
Finally
End Try
End Sub
End Class
Public Class Person
Public PersonID As String
End Class
有两种用途该类:
1) Call the constructor with a Person argument. Then call SingleDelete i.e. delete one person.
2) Call the zero argument constructor. Then call multiple delete i.e. delete many persons (all persons in the list are deleted)
这是否打破SOLID原则是什么?我认为这个班有两个目的。如果使用零参数构造函数,则不使用PersonID实例变量。
我徘徊,如果我超过这个。
也许吧。我认为如果你根据PersonID是否为null将WHERE子句添加到命令字符串中,你可以将它们折叠成一个大小写。 – neontapir 2013-03-25 21:43:22
偏离主题,如果这是整个代码,那么您并未关闭连接。 – 2013-03-25 21:43:52
@Jack Pettinger,谢谢。我总是在生产环境中使用USING语句来处理一次性对象。我错过了上面代码的速度。无论如何。 – w0051977 2013-03-25 21:46:23