преобразование asp-classic в .NET ... я мог бы использовать некоторые предложения - PullRequest
1 голос
/ 09 сентября 2010

Я преобразовываю классический сайт ASP в .NET и мог бы использовать некоторые предложения для этой проблемы.

оригинальный код:

Dim oCountCMD
oCountCMD = Server.CreateObject("ADODB.Command")
With oCountCMD
    .ActiveConnection = Application("ConnString")
    .CommandText = "sp_GetSearchHistoryCount"
    .CommandType = .CommandType.StoredProcedure
    .oCountCMD(1) = strUser
    .oCountCMD(2) = DateAdd("n", -1, Now())
    .Execute()

    If oCountCMD(0) > 60 Then
        CheckSearchCounts = True
    Else
        CheckSearchCounts = False
    End If
End With
oCountCMD = Nothing

мой незаконченный преобразованный код:

Dim objConnection As New SqlConnection(Application("ConnString"))
Dim oCountCMD As New SqlCommand("sp_GetSearchHistoryCount", objConnection)

With oCountCMD
    .CommandType = CommandType.StoredProcedure

    .Parameters.Add(New SqlParameter("@UserName", SqlDbType.VarChar, 20))
    .Parameters("@UserName").Value = strUser

    .Parameters.Add(New SqlParameter("@SearchDt", SqlDbType.DateTime))
    .Parameters("@SearchDt").Value = DateAdd("n", -1, Now())

    // need to execute here, and find number of rows/records returned
End With

как я могу получить количество строк, возвращаемых при выполнении этой хранимой процедуры?

Ответы [ 3 ]

1 голос
/ 09 сентября 2010

Спасибо за обновление комментария.

Если ответ хранимого процесса представляет собой одно значение, то вам нужно выполнить SqlCommand, который вы настроили. Если вы ExecuteScaler() в этой команде, то она вернет один тип Sql, скорее всего, и int, а затем вы можете преобразовать его в значение .net.

Надеюсь, это поможет: -)

1 голос
/ 10 сентября 2010
Dim countEffected As Integer=0

With oCountCMD
    .CommandType = CommandType.StoredProcedure    
    .Parameters.Add(New SqlParameter("@UserName", SqlDbType.VarChar, 20, strUser))       
    .Parameters.Add(New SqlParameter("@SearchDt", SqlDbType.DateTime,,DateAdd("n", -1, Now())))

    countEffected = .ExecuteScalar()    
End With

'return true/false as previous VB6 did.
CheckSearchCounts = countEffected > 60 
1 голос
/ 09 сентября 2010

Попробуйте

Dim theCount Integer 
theCount = .ExecuteScalar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...