Я пытаюсь установить свой DbDataReader динамически на основе версии базы данных (Oracle или SQL) в рамках функции async. Функция GetReaderAsync должна возвращать тип DataReader, поэтому я могу использовать общий читатель с остальными моими операциями. Это моя цель, поэтому не чувствуйте себя обязанным исправить этот код, который может быть основан на неправильной идее, но предоставить код примера для выполнения этого требования. На данный момент я получаю ошибку компиляции ReadAsync is not a member of System.Threading.Tasks.Task(Of System.Data.Common.DbDataReader)
Я считаю, что я делаю что-то неправильно, возможно, в функции GetReaderAsync.Выбор типа DataReader на основе версии базы данных
Using reader As Task(Of Common.DbDataReader) = ConnectionController.GetReaderAsync(command) ' CType(Await command.ExecuteReaderAsync(CommandBehavior.SequentialAccess), Oracle.DataAccess.Client.OracleDataReader)
While Await reader.ReadAsync() '<-- Compilation Error
If reader.HasRows Then
End If
End While
End Using
Public Shared Async Function GetReaderAsync(command As DbCommand) As Threading.Tasks.Task(Of DbDataReader)
'Depending on the XML value provided in the [Provider], then select the appropriate connection from
'the object oSettings of the SettingsController. The SettingsController provides a structure called Provider to choose from
If SettingsController.oSettings.Connection.provider.ToLower = SettingsController.Provider.Oracle Then
Using reader As Oracle.DataAccess.Client.OracleDataReader = CType(Await command.ExecuteReaderAsync(CommandBehavior.SequentialAccess), Oracle.DataAccess.Client.OracleDataReader)
command.ExecuteReader()
Return reader
End Using
Else
Using reader As SqlClient.SqlDataReader = CType(Await command.ExecuteReaderAsync(CommandBehavior.SequentialAccess), SqlClient.SqlDataReader)
command.ExecuteReader()
Return reader
End Using
End If
End Function
Что вы используете для параметров? – alwaysVBNET
Нет параметров. Здесь пример: Использование dr как IDataReader = cmd.ExecuteReader (sql) ... Завершение использования – etalon11
Уверены, но не используете ли вы параметры в своем операторе SQL? Или вы используете только SQL со строковыми значениями? – alwaysVBNET