для неё потребуется скачать OTL и иметь на машине оракловые include/lib
после сборки приложение зависит ТОЛЬКО от установленного Oracle client, никаких ODBC драйверов не нужно.
Сценарий использования:
1) создаётся объект CSQLConnect
2) при необходимости создаются собственные обработчики исключений и свой монитор SQL команд. (наследуются от CSQLExceptionHandlerBase и CSQLMonitorBase соотв.)
3) указываются данные подключения CSQLConnect::SetLogonInfo
4) выполняется соединене CSQLConnect::Connect
Полностью поддерживается MFC тип данных COleDataTime(). При желании можно достать OTL'ный описатель подключения (CSQLConnect::GetRawConnect) и напрямую юзать те возможности OTL, которые не реализованы в этой обёртке. Так же есть вкусности типа кешированного датасета и возможность слияния запросов.
Если заинтересуетесь — с удовольствием отвечу на возникающие вопросы и исправлю найденные ошибки.
Re[2]: Параметризированный запрос в MFC
От:
Аноним
Дата:
06.02.06 14:57
Оценка:
Здравствуйте, Аноним, Вы писали:
А>возьми вот эту либу.
ИМХО, ещё лучше взять ADO. Никак не пойму, чего народ так любит с MFC/ODBC париться? Неужели только из-за того, что МС лет 15 назад, когда кроме ODBC ничего не было, засунул эти классы в MFC?
Re[3]: Параметризированный запрос в MFC
От:
Аноним
Дата:
06.02.06 19:04
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>возьми вот эту либу.
А>ИМХО, ещё лучше взять ADO. Никак не пойму, чего народ так любит с MFC/ODBC париться? Неужели только из-за того, что МС лет 15 назад, когда кроме ODBC ничего не было, засунул эти классы в MFC?
Очень жаль, что вы не потрудились посмотреть приведённые мной ссылки. Иначе бы вы поняли что приведённый мной способ ни в коей мере не опирается на MFC (а тем более на ODBC). Это самое что ни на есть нативное решение для Oracle, работающее напрямую через OCI. Только в отличие от муторного OCI лёгкость использования сравнима с Delphi/VB. Эффективность ADO всё-таки похуже будет "родного" Ораклового интерфейса. Плюс для этих либ не нужно ничего лишнего тащить на машину.
Re[2]: Параметризированный запрос в MFC
От:
Аноним
Дата:
06.02.06 19:21
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, tzragravorox, Вы писали:
А>возьми вот эту либу.
SQLQuery (hstmt, "INSERT INTO [TABLE] ([name]) VALUES (?s)", lpszName);
SQLQuery (hstmt, "UPDATE [TABLE] SET [name] = ?s WHERE ([id] = ?)", lpszName, &id);
SQLQuery (hstmt, "UPDATE [TABLE] SET [data] = ?b WHERE ([id] = ?)", pData, &iSizeData, &id);
?B, ?b — бинарный тип передается указатель на буффер и указатель на размер буфера;
?S, ?s — строковый тип указатель на NULL-terminated string;
?F, ?f — REAL тип БД, передается указатель на float C type;
?D, ?d — FLOAT тип БД, передается указатель на double C type;
? — указатель на целый тип int.
Re[3]: Параметризированный запрос в MFC
От:
Аноним
Дата:
07.02.06 06:09
Оценка:
Здравствуйте, Symon, Вы писали:
S>Примеры запросов: S>
S>SQLQuery (hstmt, "INSERT INTO [TABLE] ([name]) VALUES (?s)", lpszName);
S>SQLQuery (hstmt, "UPDATE [TABLE] SET [name] = ?s WHERE ([id] = ?)", lpszName, &id);
S>SQLQuery (hstmt, "UPDATE [TABLE] SET [data] = ?b WHERE ([id] = ?)", pData, &iSizeData, &id);
S>
S>
S>?B, ?b — бинарный тип передается указатель на буффер и указатель на размер буфера;
S>?S, ?s — строковый тип указатель на NULL-terminated string;
S>?F, ?f — REAL тип БД, передается указатель на float C type;
S>?D, ?d — FLOAT тип БД, передается указатель на double C type;
S>? — указатель на целый тип int.
как у вас биндятся даты ? входные-выходные параметры процедур ?
Здравствуйте, tzragravorox, Вы писали:
T>Я окончательно запутался.
[skipped]
T>
T>void CDatabase::BindParameters(HSTMT /* hstmt */)
T>{
T> // Must override and call SQLBindParameter directly
T>}
T>
T>Что ето значит?
T>В MNSD говаритса что при исползовании ExecuteSQL нужно переопределять эту функцию.
T>Но у меня даже нет обекта CDatabase.
T>Я понял что ODBC отстой но неужели некто это ранше не делал я почти закончил, не хочетса все менять.
T>Сп!
Позвольте с вами не согласиться — то что вы приводите есть MFC
Фукции ODBC просты, написаны на C (а не С++), главное: последовательность действий правильно задать
Последовательность действий:
1. В MSDN (я искал в MSDN98) SQLExecute.
2. В разделе можно получить ссылки на другие функции, пример SQLBindParameter, и даже с примером
3. Да и примеров полно. В MSSQL7 кажется, был примерчик для ODBC, как хранимые процедуры MSSQL вызывать всякие.
Я сделал давно-давно сделал себе C++ библиотечку поверх ODBC, и уже лет 12 использую.
Наворотов не много:
1. логин автоматически, по сохраненной ранее строки соединения.Если нет ее, через SQLDriverConnect, который позволяет выбрать драйвер.
2. SQL пишу руками,
3. Pезультат ловлю в структурированный класс
(Дать могу, но код не очень изящный: местами очень старый и как всегда без коментариев , проще самому написать, если чего — в мыло стукни).
Как правило быстродействия хватаиет для небольших проектов (типа найти-распечатать-скоректировать-добавить).
А других типов проектов не так и много
Здравствуйте, Аноним, Вы писали:
А>для неё потребуется скачать OTL и иметь на машине оракловые include/lib А>после сборки приложение зависит ТОЛЬКО от установленного Oracle client.
Улыбнуло.
Напоминает компилирование прог под линукс — скачайте эту либу, для нее эту, для нее еще парочку этих и ничего кроме еще трех либ вам больше не понадобится
Re[3]: Параметризированный запрос в MFC
От:
Аноним
Дата:
08.02.06 01:23
Оценка:
Здравствуйте, Burz, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>для неё потребуется скачать OTL и иметь на машине оракловые include/lib А>>после сборки приложение зависит ТОЛЬКО от установленного Oracle client.
B>Улыбнуло. B>Напоминает компилирование прог под линукс — скачайте эту либу, для нее эту, для нее еще парочку этих и ничего кроме еще трех либ вам больше не понадобится
Эх, ну так уж вышло, что либа опирается на OTL (на один-единственный *.h файл).
Ну я для сборки приложений использующих OCI как ни вертись, а inclue/lib ораклиные нужны
для сборки действительно больше ничего не понадобится, плюс дистрибутив ничего кроме программы ложить не придётся