2010-09-09 38 views
1

我正在將一個經典的asp網站轉換爲.NET,並可以使用一些建議來解決這個問題。asp-classic to .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 

我如何能捕捉當我執行此存儲過程的行數返回?

+0

請告訴我存儲過程的簽名?你有任何輸出參數嗎? – WestDiscGolf 2010-09-09 19:43:21

+0

簽名是「sp_GetSearchHistoryCount」,我不知道輸出參數是什麼。這個存儲的proc只接受兩個參數,@ UserName和@SearchDt。 – user408869 2010-09-09 19:47:34

回答

1

嘗試

Dim theCount Integer 
theCount = .ExecuteScalar() 
1

感謝您的評論的更新。

如果存儲過程的響應是單個值,那麼您需要執行已設置的SqlCommand。如果你在這個命令上使用ExecuteScaler(),那麼它將返回一個單一的Sql類型,最有可能的是int,然後你可以將它轉換成一個.net值。

希望它可以幫助:-)

1
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 
相關問題