![]() |
|
![]() ![]() ![]() |
|
xkill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Просмотрел темы связаные с моей, где-то говорится, что ADO устарело в другой ни одной строчки кода и т.д.
По-этому возник вопрос, ситуация такая: Чистый проект, в папке с ним лежит файл file.mdb. Файл БД Access'овский(2003). Среда BCB6.0. И возникает вопрос как общаться с этой БД, какие компоненты использовать, какие настройки следует производить? |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
На счет того, что ADO устарело ни разу не слышал, может и так. А вот то, что BDE перестает поддерживаться Борландом слышал неоднократно.
Я начинал с компонентов BDE. В принципе разобраться легко, работать тоже, но требует настройки при переносе на компьютер пользователя. Это конечно решаемо, но при сравнительных тестах на больших базах ADO практически всегда оказывается быстрее. Исключение составил тест на простой перебор записей. Поэтому я перешел на ADO. С ADO мне показалось работать гораздо комфортнее по многим критериям. ИМХО Для поставленной задачи я бы выбрал ADO |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
||||
|
||||
xkill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Вроде разобрался с тем как подконнектится к ODBC через ado.
Но тут возник вопрос, а как выполнять запросы(через какую функцию)? ![]() Это сообщение отредактировал(а) xkill - 31.1.2007, 16:42 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
Примеров использования TADOQuery на форуме просто море.
Создается ADOConnection Бросается компонент TADOQuery В этом компоненте устанавливается свойство SQL - это запрос Если запрос на выборку - то к TADOQuery подключается TDataSet, через который можно отображать в TDBGrid и т.п. |
|||
|
||||
xkill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
компонент TADOuery. (использую ODBC, а бд Access'овская)
Встретил проблемку:
Как можно дальше работать(всмысле какие настройки, функци использовать), т.к. каждый раз через переборку значений слишком много времени будет уходить ??? ![]() ![]() ![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
Надо посмотреть результирующий запрос - скорее всего все-таки он неправильный.
Конкретно для посавленной задачи можно использовать параметризированный запрос. SELECT * FROM Name WHERE id = :pIdi Кстати, Name возможно зарезевированное слово и его надо взять в квадратные скобки (точно не помню) С параметризированным запросом работа строится так:
|
|||
|
||||
bas |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: нет Всего: 2 |
||||
|
||||
xkill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
bas, забыл про такую вещь)
А что за параметры ему требуются? |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
Надо посмотреть результирующий запрос.
Мне кажется он какой-то неправильный. Попробуйте выбрать все записи: SELECT * FROM MyTable Сработает такой запрос? |
|||
|
||||
xkill |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Anikmar,
работал я раньше с мускулем, там такой вопрос без проблемно обратывается (сейчас убедился ещё раз). Посмотрев в справке по access'у, пример:
Решил проверить методов "заковычивания" ))) И всё без проблем получилось:
И так он перестал ругаться) Но почему-то он не выбирает данные(query->recordcount, равен 0! ![]() ![]() ![]() Дальше пошло ещё интереснее При запросе
В recordcount был равен всем записям,когда же при запросе:
recordcount был равен нулю опять, вместо положенных 4-х p.s. фиг поймёшь филосовию access'овского sql'я ![]() ![]() ![]() ![]() |
||||||||
|
|||||||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
А какой тип поля у id?
Ведь конструкция 'id' = '5' никода не будет истина - там сравниваются две строки... Не должно быть там никаких кавычек! Добавлено @ 22:40 Для интереса запустил access и сгенерил запрос в нем (используя борландский пример базы) Вот что он мне сгенерил с помощью своего построителя запросов:
Может там все дело в скобках? |
|||
|
||||
xkill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 31.5.2006 Репутация: нет Всего: нет |
Тип у id числовой
Вообщем в where условия поместил в скобки и всё встало на свои места)
феноменально) При этом в справке несказано про скобки (в инстуркции по select) Какие функции спользуются в DBGrid для обавления записей? |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: нет Всего: 59 |
Во-первых там есть автоматическое создание записей, но такое создание криво работает с полями подстановки. Я делал 2 путями. 1-й: Запрос вида SELECT * FROM Table Далее MyQuery->Insert(); Устанавливаем поля MyQuery->Post(); 2-й (на мой взгляд более трудоемкий но более правильный) Запрос вида INSERT INTO Table (Field1,Field2) VALUES(:pField1,:pField2) Устанавливаем параметры выполняем MyQuery->ExecSQL(); Еще есть способ использовать UpdateSQL - но в ADO такого нет, это только для BDE |
|||
|
||||
bas |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: нет Всего: 2 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C++: Базы данных" | |
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |