Подсчет (*) с использованием Enterprise Library - PullRequest
0 голосов
/ 31 августа 2009

Кто-нибудь знает, как использовать счетчик (*) в динамическом запросе с блоком приложения доступа к данным библиотеки предприятия?

Я использую:

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

Эта ошибка выдается:

Интерфейс ITransactionLocal не поддерживается поставщиком «Microsoft.Jet.OLEDB.4.0». Локальные транзакции недоступны у текущего провайдера.

Ответы [ 2 ]

3 голосов
/ 31 августа 2009

Вы пытались создать SQLCommand, а затем использовать Cmd. ExecuteScalar ?

Кроме того, вы используете переменную в своем запросе! Это определенно требует параметризованного SQLCommand только для того, чтобы избежать внедрения кода SQL! Не имеет значения, можете ли вы гарантировать, что это безопасно или нет. Лучшая практика - всегда использовать параметры вместо этого. (Почему? Потому что другой разработчик, который смотрит на ваш код, будет учиться на собственном примере, а вы не хотите, чтобы они изучали плохие практики!)

Вы уже пытались добавить "OLE DB Services = -4" в строку подключения? Я слышал, что это может решить эту ошибку транзакции. :-) (Признаюсь, я отредактировал этот ответ после прочтения вашего комментария.) В любом случае, эта опция связана с транзакцией включением базы данных. Вы переопределяете настройку, добавляя это значение. (Да, я бессовестно гуглял за это.) Кажется, что ваши службы OLE DB были изменены или, возможно, они просто разные, потому что вы находитесь в другой системе.

0 голосов
/ 19 сентября 2009

Я посмотрел сообщение об ошибке и обнаружил, что добавление «OLE DB Services = -4» в строку подключения решило проблему при использовании приведенного выше кода. Так что, похоже, мой код не был технически неправильным, просто какая-то проблема со строкой соединения (хотя раньше она работала нормально!)

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