Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Работа в C++ с несколькими БД

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Лекс



Зарегистрирован: 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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...