Как извлечь результат из SqlReader, возвращенного из OleDbCommand.ExecuteReader

Я просмотрел этот сообщение SO и подобные статьи. У меня гораздо более простая проблема: получить результат select count(*).

Я отслеживаю имена файлов и даты, сохраняя их в базе данных MS Access. Я могу узнать, добавил ли я уже имя файла и дату в базу данных, выполнив select count(*) в базе данных следующим образом:

let query = "select count(*) from ReportProcessedStatus 
                             where ReportDate = #" + report_date + "#
                             and ReportFileName = '" + fn + "'"

Мой cmd.ExecuteReader () преуспевает, но мне трудно понять, как получить значение счетчика из считывателя.

let reg_fnam_template = "arrgster*"

let ADOCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.\Munis_To_InvoiceCloud.mdb")
    ADOCon.Open ()    

let dir_list = Directory.GetFiles(spool_dir, reg_fnam_template)

for fn in dir_list do
printfn "Working on Munis Extract File: %A " (Path.GetFileName(fn))
let query = "select count(*) from ReportProcessedStatus where ReportDate = #" + report_date + "# and ReportFileName = '" + fn + "'"
    use cmd = new OleDbCommand(query , ADOCon)
    let sql_reader = cmd.ExecuteReader ()
    let row_read_OK = sql_reader.Read ()

Весь этот код работает, и row_read_OK становится истинным после выполнения.


person octopusgrabbus    schedule 25.05.2017    source источник
comment
Вы можете изучить ExecuteScalar вместо ExecuteReader   -  person kvb    schedule 25.05.2017