Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Лекс
Зарегистрирован: 25.07.2005 Сообщения: 3
|
Добавлено: Ср Авг 03 2005 15:18 Заголовок сообщения: Работа в C++ с несколькими БД |
|
|
У меня БД под Аксес, разделенная на два файла. Разбита она по причине того, что некоторые таблицы содержат мало инфы, а другие постоянно растут и довольно быстро программа (С++) архивирует вторую БД и программно создает новый файл БД (если кому интересно как, могу рассказать). Проблемма состоит в том, что класс CRecordset умеет работать только с одним активным подключением. Таким образом простой запрос объединяющий обе БД приходится разбивать на два, например:
Файл №1:
Tab1
Field1ID
Field1Name
Файл №2
Tab2
Field2ID
Field1ID // связь с др.таблицей
Field2Name
Запрос:
SELECT t1.Field1Name, t2.Field2Name
FROM Tab1 AS t1
LEFT OUTER JOIN Tab2 AS t2
ON t1.Field1ID = t2.Field1ID
такой запрос не пройдет. Приходится делать скажем два экземпляра CRecordset, подключенным к разным CDatabase. Производить следующие выборки:
SELECT Field1Name, Field1ID
FROM Tab1
а потом при необходимости:
SELECT Field2Name
FROM Tab2
WHERE Field1ID = ...
В итоге заполнение CListCtrl на 10'000 записей превращается в утомительное ожидание.
Допустим в Аксесе можно создать "связь с Базой" и работать с двумя файлами через один Рекордсет. Но как такую связь создать программно я не нашел.
Если у кого-нибудь есть какие-нибудь идеи на этот счет - БУДУ ОЧЕНЬ ПРИЗНАТЕЛЕН! |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Чт Авг 04 2005 12:59 Заголовок сообщения: Так же был (+) |
|
|
так же был проект на MSVC++. Достаточно большой и исторически сложён как и в Вашем случае - с кучей рекордсетов, буквально по каждой таблице. После детального изучения известного опыта, было решено писать свои обёртки. Нечто аналогичное CDatabase и CRecordset. Это были несколько классов общающихся напрямки с ODBC.
несколько выделенных обьектов...везде было применено сепарированное обработка ошибок.
1) конекшен к базам.
2) коллекция коннекшеннов.
3) сущность типа рекордсета.
4) сущность поля. упрощала код при использовании. в основном приведение типов.
Работа складывалась из формирования SQL строки. Запроса на выполнение и чтение филдов с необходимым типом. Код резко сократился.
с уважением
(круглый) |
|
Вернуться к началу |
|
|
gourmet
Зарегистрирован: 28.09.2005 Сообщения: 3
|
Добавлено: Вт Окт 18 2005 20:52 Заголовок сообщения: |
|
|
Tool that lets you scan for open proxies including HTTP and Socks proxies.
http://www.socksproxylist.com |
|
Вернуться к началу |
|
|
|