в C # метод OleDbDataAdapter.fill не дает никаких данных или ошибок - PullRequest
0 голосов
/ 01 февраля 2011

Я использую адаптер данных для извлечения данных из базы данных доступа (см. Код ниже).Когда я запускаю SQL в базе данных Access, я получаю ожидаемые данные.Однако, когда я перебираю код, метод fill создает только определение таблицы, но не строки.

В прошлом я использовал эту процедуру много раз, и она все еще работает для этих вызовов.

Снова SQL в доступе возвращает правильные данные, и в C # я не получаю ЛЮБОГО сообщения об ошибке, но я также не получаю данные.Кто-нибудь видел это раньше?

`
public void GetQueries (ref DataTable tSQL, инструмент String, строковый фильтр, OleDbConnection lConn) {OleDbDataAdapter dadapt = new OleDbDataAdapter ();// Адаптер данных для строки доступа lSQL = "";

        //assign the connection to the processing mdb
        //lAccProcSQL.Connection = lConn;

        //Pull the queries to be executed
        lSQL = "SELECT * FROM tblSQL WHERE Active = TRUE AND ToolCode = '" +
            tool + "' and type not in (" + Filter + ") ORDER BY QueryNum";

        //Set the adapter to point to the tblSQL table
        dadapt = new OleDbDataAdapter(lSQL, lConn);

        //clear tables in case of rerun
        tSQL.Clear();

        //Fill working queries data table
        dadapt.Fill(tSQL);

    }`

1 Ответ

0 голосов
/ 01 февраля 2011

Вы уверены, что фильтр, который вы определили в предложении WHERE, будет иметь значение true для определенных строк?

Почему вы не используете параметры вместо конкатенации строк?Вы уверены, что Active = True оценит как истинное?Насколько я знаю, True представлен в Access как -1.

Итак, почему бы вам не попробовать это так:

var command = new OleDbCommand();
command.Connection = lConn;
command.CommandText = "SELECT * FROM tblSql WHERE Active = -1 AND ToolCode = @p_toolCode AND type NOT IN (" + filter + ") ORDER BY querynum";
command.Parameters.Add ("@p_toolCode", OleDbType.String).Value = tool;
datapt = new OleDbDataAdapter();
datapt.SelectCommand = command;
dadapt.Fill (tSql);
...