簡體   English   中英

使用企業庫計數(*)

[英]Count(*) using Enterprise Library

有誰知道如何在帶有企業庫數據訪問應用程序塊的動態查詢中使用count(*)?

我在用:

Public Shared Function selectCount(ByVal code As String) As Integer
    Dim query As String = "SELECT COUNT(*) " & _
                          "FROM " & _
                            "Data " & _
                          "WHERE " & _
                            "Code = '" & code & "'"
    Dim db As Database = DatabaseFactory.CreateDatabase()
    Return db.ExecuteScalar(System.Data.CommandType.Text, query)
End Function

拋出此錯誤:

Microsoft.Jet.OLEDB.4.0提供程序不支持ITransactionLocal接口。 當前提供商無法使用本地交易。

您是否嘗試過創建SQLCommand,然后使用Cmd。 ExecuteScalar

另外,您在查詢中使用變量! 這絕對需要一個參數化的SQLCommand,以避免SQL代碼注入! 可以保證是否安全無關緊要。 最佳實踐是始終使用參數代替。 (為什么?因為其他偷看您的代碼的開發人員將通過示例進行學習,並且您不希望他們學習不良做法!)

您是否已嘗試將“ OLE DB Services = -4”添加到連接字符串? 我聽說這可能解決此交易錯誤。 :-)(嗯,我承認,在閱讀您的評論后,我已經編輯了此答案。)無論如何,此選項與數據庫的事務 登記有關。 您將通過添加此值來覆蓋設置。 (是的,我毫不掩飾地搜索了它。)似乎您的OLE DB服務已被修改,或者它們只是有所不同,因為您使用的是不同的系統。

我查找了錯誤消息,發現通過在連接字符串中添加“ OLE DB Services = -4”可以清除使用上述代碼時的問題。 因此,看來我的代碼在技術上沒有錯,只是連接字符串存在一些問題(盡管之前運行良好!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM