powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конкатенация в макросе
25 сообщений из 53, страница 2 из 3
Конкатенация в макросе
    #39919653
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А idl-ку к ODBC не пробовал переправить и пересобрать?
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919673
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Вот для .Net такой оберткой и является ADO.Net

ado.net не требует никаих обёрток
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919684
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А в стеке технологий если сравнить ODBC/Ado что у них общее?

ADO (который классический, не .NET) является обёрткой для OLEDB.
OLEDB кроме нативных провайдеров имеет обёртку над ODBC

нативный майкрософтовский dblib давно похоронен
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919698
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А в стеке технологий если сравнить ODBC/Ado что у них общее? Или есть ли какая-то
поясняющая картинка как идет современная интеграция приложений Microsoft
с MSSQL? ИЛи там какие есть best-practices. Рекомендации...
Общего у ODBC и ADO довольно много. Начиная с владельца и заканчивая общими принципами работы с ними.
В среднем, для простоты понимания, можно говорить что ADO и ODBC это родные братья, но ADO для тех языков которые предпочитают работать с классами, а ODBC для языков предпочитающих функции. По возможностям и количеству фич они практически равны.
С точки зрения практической реализации, большинство ADO подключений к СУБД это всего-лишь использование моста ODBC-OLEDB-ADO с ODBC драйвером делающим реальные TCP запросы, а клиентская программа работает на ADO. Практически, вплоть до появления ADO.Net не существовало ADO драйверов.

А рекомендации... Все зависит от СУБД и языка на котором пишется клиент. В среднем, можно брать тот интерфейс который более удобен с точки зрения языка клиента (и это чаще всего ADO). Потери производительности на обертке можно игнорировать.
Но бывают ODBC драйвера с "расширениями вендора" которые дают больше функциональности. Например ODBC для SA позволяет делать push сообщений на клиента из хранимых процедур - чрезвычайно вкусная штука, но доступная только для прямого использования ODBC.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919702
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
mayton
А в стеке технологий если сравнить ODBC/Ado что у них общее?

ADO (который классический, не .NET) является обёрткой для OLEDB.
OLEDB кроме нативных провайдеров имеет обёртку над ODBC

нативный майкрософтовский dblib давно похоронен
Вообще-то dblib это детище Sybase а не Microsoft. Разработанное во времена Sybase SQL Server.

Когда Microsoft купила у Sybase исходники их СУБД - купили и исходники клиентского интерфейса (dblib).
Долгое время, dblib был единственной возможностью подключаться к обоим СУБД (Sybase и MS SQL Server). Потом энтузиасты взломали этот интерфейс и родился FreeTDS.
Потом у Microsoft появились другие СУБД (FoxPro, Access) и возникла необходимость поддерживать три разных интерфейса - родился ODBC. Новый интерфейс стал "родным" для MS SQL Server и dblib в Микрософте умер.
А вот Sybase продолжала его поддерживать, но параллельно и новый интерфейс начали разрабатывать - родился CTlib. Оба интерфейса dblib и CTlib продолжали распространятся в каждой новой версии (теперь уже) Sybase Adaptive Server Enterprise. И вместе они назывались Open Client. Потом Open Client начал включать в себя и ODBC и OLE DB драйвера. Сейчас, когда эта СУБД уже носит имя SAP Sybase Adaptive Server Enterise - dblib продолжает существовать в каталоге на клиентском диске. Но я не знаю ни одного существующего проекта который не был бы переведен на CTlib или ODBC.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919705
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Если точнее -
Ado.net ничего общего с ado не имеет кроме похожего названия
Ado обертка над oledb, в odbc не нуждается ( хотя мост oledb-odbc существует)

Oledb поддерживает нереляционные источники - https://www.ibm.com/support/pages/oledb-ole-db-and-odbc-positioning
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919710
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
White Owl,

Если точнее -
Ado.net ничего общего с ado не имеет кроме похожего названия
Не только похожее название, но и такой-же набор классов и методов - а это и есть определение интерфейса.

Изопропил
Ado обертка над oledb, в odbc не нуждается ( хотя мост oledb-odbc существует)
Да, ADO обертка над OLE DB. И да существуют OLE DB драйвера. Вот только они все разрабатывались по остаточному принципу и чрезвычайно кривы (как собственно и сам OLE DB). Поэтому практически всегда ADO используется с ODBC (через мост конечно же).

Изопропил
Oledb поддерживает нереляционные источники - https://www.ibm.com/support/pages/oledb-ole-db-and-odbc-positioning
ODBC их тоже поддерживает. Примеры, ну хотя-бы xBase и Excel. В этих случаях парсер SQL запросов и собственно "сервер" находится непосредственно внутри ODBC драйвера. Этот SQL является диалектом разработанным для MS Access и практически as is скопированный во все микрософтовские ODBC драйвера для нереляционных БД, называется Jet SQL.

И вообще, мы ушли от изначальной темы топика, поэтом прекращаем.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919772
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Dimitry Sibiryakov,

А idl-ку к ODBC не пробовал переправить и пересобрать?
я к чему это(вчера с планшета был)
сишные заголовки не исходные, а автогенирируемые

если надо только константы, то урвать их с библиотеки типов и отформатировать "как надо" дело недолгое
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919915
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)сишные заголовки не исходные, а автогенирируемые

У ODBC - исходные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919923
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а где конфликт sql.h и ibase.h ?
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919928
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропила где конфликт sql.h и ibase.h ?

Например, SQL_TYPE_DATE.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919962
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

мешает ненужный sqlda_pub.h ?
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39919975
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилмешает ненужный sqlda_pub.h ?

"Ненужный"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920024
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Изопропилмешает ненужный sqlda_pub.h ?

"Ненужный"?..
если нужный - зачем тогда #undef SQL_INTEGER ?
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920033
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такую вот картинку нашел.

...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920054
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

полудухпо сути ты хочешь это:

Да. И ещё "#undef SQL_INTEGER" после этого.


Если в три строчки, то можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#define SQL_INTEGER 2

#define PREDEFINE(name) const int TMP_##name = name;
#define REDEFINE(name) const int name = TMP_##name;

PREDEFINE(SQL_INTEGER)
#undef SQL_INTEGER
REDEFINE(SQL_INTEGER)



Если никто не берет адреса от TMP_... то оно как-бы и не должно быть в памяти.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920114
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вот такую вот картинку нашел.

Врут.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920116
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
mayton
Вот такую вот картинку нашел.

Врут.

Дай более корректную картинку.
Я обычно начинаю изучение вопроса со стека зависимостей. Кто что вызывает и кто от чего зависит.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920135
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
White Owl
пропущено...
Врут.

Дай более корректную картинку.
Я обычно начинаю изучение вопроса со стека зависимостей. Кто что вызывает и кто от чего зависит.
Да нет такой картинки. Там слишком много будет стрелочек чтобы в них всех разобраться. Или возьми эту картинку что ты уже нашел, объедини два нижних бокса (SQL/non-SQL) и добавь стрелочек из каждого верхнего бокса в нижний (за исключением ADO который только на OLE DB).

В общем ситуация простая:
У каждой СУБД есть собственный протокол общения с клиентами. SQL или не-SQL СУБД не важно.
Каждый такой протокол имеет собственный интерфейс который может использоваться клиентом - в этом случае клиент получает полный доступ к возможностям СУБД. Но эти интерфейсы уникальны для каждой СУБД и не совместимы между собой (исключение родственные протоколы).

Кроме уникальных (родных) интерфейсов существует группа универсальных интерфейсов рассчитанных на использование в конкретном языке (группе языков). Тогда мы говорим о "драйвере для СУБД" в рамках интерфейса.
Драйвер для СУБД реализует протокол общения между СУБД и машиной клиента, и выступает переводчиком между клиентским интерфейсом и протоколом. Если интерфейс SQL, а сама СУБД не SQL, то парсер языка вставляется внутрь драйвера, между собственно клиентским интерфейсом и драйвером протокола.
За исключением ADO который является полной оберткой надо OLE DB и полностью зависит от драйвера реализованного в OLE DB. Однако так как существует стандартный драйвер-мост OLE DB - ODBC то и ADO может работать на ODBC драйвере.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920159
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl, OK спасибо.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920177
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlОднако так как существует стандартный драйвер-мост OLE DB - ODBC то и ADO может работать
на ODBC драйвере.

В результате ODBC драйвер переводит нативный интерфейс в ODBC интерфейс, потом OLE DB
провайдер для ODBC переводит ODBC интерфейс в OLE DB интерфейс, потом ADO обёртка
переводит OLE DB интерфейс в ADO интерфейс. В особо запущенных случаях ADO интерфейс
переводится в VCL DB интерфейс (для Delphi мышевозников) или обратно в нативный интерфейс
(для MS DB Links).

"А теперь мы со всей этой фигнёй попытаемся взлететь." (c)
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920186
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
White OwlОднако так как существует стандартный драйвер-мост OLE DB - ODBC то и ADO может работать
на ODBC драйвере.

В результате ODBC драйвер переводит нативный интерфейс в ODBC интерфейс, потом OLE DB
провайдер для ODBC переводит ODBC интерфейс в OLE DB интерфейс, потом ADO обёртка
переводит OLE DB интерфейс в ADO интерфейс. В особо запущенных случаях ADO интерфейс
переводится в VCL DB интерфейс (для Delphi мышевозников) или обратно в нативный интерфейс
(для MS DB Links).

"А теперь мы со всей этой фигнёй попытаемся взлететь." (c)Да. Но на практике это работает и вполне успешно.
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920238
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и каждый раз строка будет переводиться в новый интерфейс?
т.е. 4-5 copy?
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920248
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
и каждый раз строка будет переводиться в новый интерфейс?
т.е. 4-5 copy?

в случае MSSQL - OLEDB и ODBC реализованы как нативные,
никаких прокладок и лишних копирований
...
Рейтинг: 0 / 0
Конкатенация в макросе
    #39920266
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудух
и каждый раз строка будет переводиться в новый интерфейс?
т.е. 4-5 copy?
Прежде чем ужасаться, подумай, как этот "перевод" делается.
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конкатенация в макросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]