Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > MFC->CDatabase and CRecordset. |
Автор: En_t_end 22.7.2005, 17:31 | ||||||||||
В связи с постоянно добавляющимися темами по данному вопросу решено было зафиксировать одну тему. MFC позволяет работать с ODBC через класс-интерфейс CDatabase и работь с записями, в частности делать выборку, используя CRecordset. 1. Открытие источника данных(в данном случае рассмотрим открытие источника данных Аксесса, поддержка которого стандартно реализованна наиболее полно) а.) Можно открыть источник, используя строку сформированную драйвером ODBC ранее и находящуюся в его хранилище. ЗЫ доступ в это хранилище можно получить физ. путем, то есть пуск->настройка->панель управления->администрирование->источники данных(ODBC). Или же программно, используя соответсвенное АПИ. Чтобы выйти на полный список функций для поиска в MSDN можно набрать SQLDataSources - функция, возврающая список всех добавленных источников данных(для получения всего списка необходимо использовать рекурсивно либо в цикле). В любом случае, для открытия источника вам потребуется сформировать строку такого формата:
б.) Второй способ... это открытие источника путем полного формирования строки.
Универсальная функция...
2. Связываем с базой данных специальный обьект от класса CRecordes. Это нужно, чтобы удобнее управлять структурой базы и получать результаты выборки.
3. Простейший пример выборки всех записей из предполагаемой таблицы Test:
4. Выполнение любого другого запроса кроме выборки нужно делать через CDatabase::ExecuteSql(SqlString); Естественно чтобы использовать эти классы нужно подключить afxdb.h |
Автор: Coocky 25.7.2005, 17:38 | ||
считаю самой безглючной CDatabase::Open(); Строка пути имеет вариант NULL. Тогда у вас при выполнении этой функции появится диалоговое окно с настройками. Окно простое и затруднений не вызовет при использовании. Все остальные данные, после открытия базы, зaполняются в поля CDatabase. Класс CRecordset имеет в себе поля для сортировки и фильтрации-m_strFilter и m_strSort После заполнения этих полей не забывайте использовать метод CRecordset::Requery(); Который пересчитывает(обновляет) выборку, согласно новым условиям. |
Автор: Coocky 26.7.2005, 15:33 |
Некоторые команды(синтаксис) для работы с БД может отличаться от синтаксиса драйвера. Поэтому, если что-то не работает, см. описание к ДРАЙВЕРУ ОДБС! |