Ошибка оледбдатаридера

Я пытаюсь сохранить текстовый файл с контактными номерами людей, которые заплатили, но я получаю сообщение об ошибке с

"OleDbDataReader dbReader = cmd.ExecuteReader()"

говоря: «Несоответствие типа данных в выражении критериев». Я думаю, что это оператор SELECT, вызывающий проблему, в доступе [Paid] - это тип данных "Да/Нет". Каков правильный способ выбора данных?

 try
        {
            string connString = (@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|DB.mdb");
            OleDbConnection conn = new OleDbConnection(connString);
            conn.Open();
            OleDbCommand cmd = conn.CreateCommand();
            cmd.CommandText = @"SELECT [CellNumber] FROM [Users] WHERE [Paid] = '1'";
            OleDbDataReader dbReader = cmd.ExecuteReader();

            StreamWriter sw = new StreamWriter("E:/Contacts.txt");
            while (dbReader.Read())
            {
                sw.WriteLine(cmd.ExecuteScalar().ToString());
            }
            sw.Close();
            dbReader.Close();
            conn.Close();

        }
        catch (OleDbException abc) 
        {
            errorLabel.Text = abc.ToString();
        }

person Community    schedule 10.07.2013    source источник


Ответы (1)


Столбец [Paid] не является строковым типом, поэтому попробуйте удалить одинарные кавычки:

cmd.CommandText = @"SELECT [CellNumber] FROM [Users] WHERE [Paid] = 1";

Как всегда, используйте параметры там, где это уместно.

person LarsTech    schedule 10.07.2013