Как "перехватить" запрос направляемый в БД

Тема в разделе "Остальные БД", создана пользователем iosif88, 28 дек 2009.

  1. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    Итак. У нас имеется какая либа система (приложение) которое через odbc посылает sql запрос к БД. Нам нужно чтоб роль БД исполняло мое приложение. Т.е. требуется получить этот самый sql запрос и выдать нужные данные иницировавшей этот запрос программе.
    Итак самый главный вопрос как получить этот sql запрос и как возвратить данные?
    В каком направлении вообще нужно копать?
     
  2. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    Возможно я плохо сформулировал вопрос.

    Вот предположим появляется новая субд. И я хочу чтобы программа раннее работавшая с какой либо известной субд через odbc, теперь работала с новой БД. Что я должен сделать для этого, написать драйвер odbc для этой новой БД?
     
  3. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    А если это невозможно ? Или к примеру "производителем" субд буду я сам? Как я должен узнать какие запросы направляются в мою БД от клиенской программы?

    Вообщем как я понимаю нужно реализовать собственный драйвер. У кого нибудь есть рекомендации как это сделать и насколько это сложно?
     
  4. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    Получить у производителя драйвер ))
    Вообщем ситуация такая: имеется некое приложение P посылающее sql запросы. Моя программа должна (1) получить этот запрос (2) преобразовать его в другой формат (3) послатть запрос на веб сервер (а тот уже будет работаь с СУБД) получить от веб сервера ответ, обратно преобразвать и возвратить ответ.
    Собственно интересуют только первые и последний пункт. Как получить запрос от P и как возвратить данные.
     
  5. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    Если докажете принципиальную невозможность этого, то этим вы также можете сильно помочь мне.
     
  6. DZX

    DZX Гость

    Классическая трехзвенка, садим между клиентом и базой своего засланного который должен уметь общаться с нашим клиентом и с базой. Удобнее всего организовать сервис. И таким образом приложению по барабану какой сервер.
    Ну а наш засланный должен уже уметь договариваться с серверами и если пересаживаемся на другой то модернизируем его под новый сервер, как то так...
     
  7. DZX

    DZX Гость

    Ну если так, то конечно задача усложняется :) нечего невозможного конечно нет, но стоит ли игра свеч?
    Стоит ли изобретать колесо?
     
  8. iosif88

    iosif88 Well-Known Member

    Регистрация:
    14 окт 2009
    Сообщения:
    97
    Симпатии:
    0
    Общаться с базой проблем нет. Главная трудность как общаться с клиентом который посылает sql запросы. (нужно чтоб запросы от клиента примала и моя программа.

    Что принимает обычно эти запросы?Драйвер ODBC ? Может где то храниться какие запросы он примал?
     
  9. DZX

    DZX Гость

    Не факт, что программа работает через ODBC, есть масса альтернатив. В вашем случае если это все же ODBC, то вариант это написать самостоятельно ODBC драйвер, как их писать я не знаю, поищите инфу на просторах интернета. Как напишите перенаправьте программу на него и творите .... удачи.
     
  10. zubr

    zubr Гость

    Если речь только о ODBC, то можно попробовать подменить системе odbcjt32.dll:
    1. Написать свою odbcjt32.dll с набором функций-оболочек SQLxxxx, к примеру SQLConnect, SQLAllocHandle, SQLExecute и т. п. (см. MSDN).
    2. Из кода функций оболочек вызывать оригинальную функцию из оригинальной odbcjt32.dll, перед этим выполнив какой то свой код.
    3. Положить свою odbcjt32.dll в каталог с программой.
     
Загрузка...

Поделиться этой страницей