当前位置: 代码迷 >> Sql Server >> 请D层疑问
  详细解决方案

请D层疑问

热度:15   发布时间:2016-04-24 10:31:09.0
请高手指点D层疑问
    '删除学生表记录
    Public Function del_student(ByVal tstCard As Model.CardModel) As Integer
        Dim strSQL As String = "delete * from Student_info where cardNO=@cardno"
        Dim params() As SqlParameter = {New SqlParameter("@cardno", tstCard.card_no)}
        Dim helper As New SqlHelper
        Dim res = helper.ExecuteNoQuery(strSQL, CommandType.Text, params)
        Return res
    End Function

    '删除卡记录
    Public Function del_card(ByVal tstCard As Model.CardModel) As Integer
        Dim strSQL As String = "delete * from Card_info where cardNO=@cardno"
        Dim params() As SqlParameter = {New SqlParameter("@cardno", tstCard.card_no)}
        Dim helper As New SqlHelper
        Dim res = helper.ExecuteNoQuery(strSQL, CommandType.Text, params)
        Return res
    End Function

请问可以合并两个函数吗,这两个除了sql语句不同剩下全都一样,不知道 strSQL 可不可以包含两个sql语句?
------解决方案--------------------
当然可以啦,用“;”隔开两个SQL语句。不过这样的话对于异常的捕获就不方便了。
------解决方案--------------------
你先提取SQL脚本,看看能否封装在一个存储过程中,然后通过参数处理
------解决方案--------------------
合并为一个函数,新增输入参数delmode用于区分删除的内容.
然后在函数中用if分支判断delmode的内容,执行不同的程序.

    Public Function del_data(delmode as String, ByVal tstCard As Model.CardModel) As integer
      if delmode="student" then
        Dim strSQL As String = "delete * from Student_info where cardNO=@cardno"
        Dim params() As SqlParameter = {New SqlParameter("@cardno", tstCard.card_no)}
        Dim helper As New SqlHelper
        Dim res = helper.ExecuteNoQuery(strSQL, CommandType.Text, params)
        Return res
      end if

      if delmode="card" then
        Dim strSQL As String = "delete * from Card_info where cardNO=@cardno"
        Dim params() As SqlParameter = {New SqlParameter("@cardno", tstCard.card_no)}
        Dim helper As New SqlHelper
        Dim res = helper.ExecuteNoQuery(strSQL, CommandType.Text, params)
        Return res
      end if    
    End Function

------解决方案--------------------
引用:
1楼可行吗,三楼还是没有避免代码的重复


可以,不要分号(用回车换行)都可以
  相关解决方案