The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Использование прямых SQL запросов в Си коде

08.12.2006 11:10

В статье "Embedded SQL with Pro*C" рассказывается о пре-компиляторе Pro*C, преобразующем исходные тексты с "Pro*C" вставками (по сути обычные SQL вставки) в нормальный Си/Си++ код.

Ниже наглядные примеры единого использования переменных и прямых SQL запросов:


       int a;
       EXEC SQL SELECT salary INTO :a
                 FROM Employee
                 WHERE SSN=876543210;
       printf("The salary is %d\n", a);

       int x; char *y; int z;
       EXEC SQL INSERT INTO emp(empno, ename, deptno)
           VALUES(:x, :y, :z);

       int emp_number[50];
       char emp_name[50][11];
       EXEC SQL INSERT INTO emp(emp_number, name)
           VALUES (:emp_number, :emp_name);



  1. Introduction to Pro*C Embedded SQL
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/9147-cpp
Ключевые слова: cpp, gcc, compile, sq;, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 13:08, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    извращение еще то. Кого учили - не пользоваться макросами, а они...уф епть
     
  • 1.2, Аноним (-), 13:27, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну нафиг, зачем это нужно если можно все сделать наглядней без этого извращения ?
     
  • 1.3, Vladimir Kozlov (?), 13:53, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ужас. Я думал что ESQL закопали и надпись на камне написали, а оно еще барахтается...
     
  • 1.4, Jelis (ok), 15:26, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А можно факты - чем такой подход плох?
     
     
  • 2.5, Vladimir Kozlov (?), 15:32, 08/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > А можно факты - чем такой подход плох?

    Да собственно... можно бифштекс покрошить в борщ, туда же вывалить салат и слить компот, а потом через край тарелки это выхлебать... Цель достигнута - запас калорий в организме пополнен :)


     
     
  • 3.6, Jelis (ok), 15:44, 08/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Я факты просил, а не ваши упражнения в красноречии.
     
     
  • 4.8, Slavik (??), 16:12, 08/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > Я факты просил, а не ваши упражнения в красноречии.

    Nedostatok ispolzovanija Embedded SQL: SQL cod vinesen za predeli basi dannix. Embedded SQL bil sozdan v to vrema (i dla togo vremeni) kogda nebilo hranimix procedur.

     
     
  • 5.9, Vladimir Kozlov (?), 16:47, 08/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > Nedostatok ispolzovanija Embedded SQL: SQL cod vinesen za predeli basi dannix. Embedded SQL bil sozdan v to vrema (i dla togo vremeni) kogda nebilo hranimix procedur.

    +1.
    Ибо в нормально спроектированном приложении есть набор объектов-оберток над хранимыми процедурами, где всё препарится и компилится на серваке. А остальной код приложения работает с этими обертками, причем за счет серверной компиляции максимально эффективным образом.
    Разбросанные тут и там по коду куски ESQL можно терпеть максимум в приложении у которого 2 таблички на mysql живут, далее это превратится в нечто монстроидальное и трудноуправляемое.
    Впрочем, отдельные умельцы по 15000 строк в void main(){} запхнуть умудряются... им не привыкать...

     
     
  • 6.10, Woody (??), 17:40, 08/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    > Впрочем, отдельные умельцы по 15000 строк в void main(){} запхнуть умудряются... им не привыкать...

    Это вы о mplayer? ;)

     
  • 6.16, Аноним (-), 00:07, 10/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    есть же обёртки над sql не на sql а уже на прикладном ЯП.
    вот для них же.
    это не то же самое что и код sql пополам с Си в разных частях приложения.
     

  • 1.7, oleg (??), 16:03, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Факты? Я пробовал пополнять калории описанным способом. Отказать.
     
  • 1.11, ram_scan (?), 18:24, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А чем плохо ? Однажды уже было, никому не мешало. Ежедневную одноразовую горбуху на пару запросов скодить - самое то. А с дуру можно ясный день и член сломать... Каждой задаче - свой инструмент.
     
  • 1.12, bodun (?), 18:50, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Небольшие утилиты писать - самое то. Будет быстро и понятно. Вместо огорода ADO или ODBC.


     
     
  • 2.13, мимоход (?), 19:14, 08/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    небольшие утилиты писать - самое то на perl или того проще - на *sh, а такие извраты - ф топку.
     

  • 1.14, AlexDaos (??), 09:28, 09/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что, сложно API соответствующей БД юзать? Там же тоже просто запросы будут, просто в сответствующей функции. А то учим Си, потом учим ESQL потом пишем, потом думаем где напароли. Все едино после прогона через препроцессор будет код для конкретной БД по идее.

    А ADO или ODBC эт для ситуации когда БД непонятно какую юзать надо... ИМХО.

     
  • 1.15, Николай Самохвалов (?), 12:45, 09/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Основной плюс - это возможность делать проверки SQL-кода до компиляции.

    Ясное дело, что есть минусы. Но вот этот плюс, на мой взгляд, даёт право на жизнь данному подходу. Это подтверждается тем, что "встроенный SQL" описан и в тексте стандартов (в какой-то из его частей).

     
     
  • 2.19, Vladimir Kozlov (?), 14:15, 11/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >Основной плюс - это возможность делать проверки SQL-кода до компиляции.
    >
    >Ясное дело, что есть минусы. Но вот этот плюс, на мой взгляд,
    >даёт право на жизнь данному подходу. Это подтверждается тем, что "встроенный
    >SQL" описан и в тексте стандартов (в какой-то из его частей).
    >


    проверки sql-кода сишным компилером... эхехе, а если я элементарно в имени поля буковку попутаю - это как, отдетектится? :)


     

  • 1.18, oleg (??), 01:49, 11/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    этот Pro*C гыдота та ещё. что более-менее простое на нём налабать можно, но не более. в своё время поковырял его и перешёл на OTL, коим остался вполне доволен.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру