Классика баз данных - статьи

       

Явное выполнение запросов (S2)


Основной альтернативой ортогональной персистемности и ее историческим предшественником является выполнение запросов, написанных на специализированном языке запросов. Основным преимуществом явного выполнения запросов является то, что программист имеет возможность непосредственного взаимодействия с сервером базы данных.

string empQuery = “SELECT e.name, e.salary, d.name as deptName” + “FROM (Employee e INNER JOIN Department d ON d.ID = e.department)” + “INNER JOIN Employee m ON m.ID = e.manager” + “WHERE e.name LIKE ? AND e.salary > m.salary”

Connection conn = DriverManager.getConnection(...); PreparedStatement stmt = con.prepareStatement(empQuery); stmt.setString(1, prefix + “%”); ResultSet rs = stmt.executeQuery(empQuery); while ( rs.next() ) { print( rs.getString(“name”) ); print( rs.getDecimal(“salary”) ); print( rs.getString(“deptName”) ); }

Рис. 3. Явное выполнение запроса с использованием JDBC

Встраиваемые запросы. Явные запросы могут встраиваться в язык программирования или обрабатываться препроцессором []. К числу примеров относится SQLJ []. Встраиваемый SQL обеспечивает статически типизированный подход к явному выполнению запросов. Как обсуждается в разд. 7, одним из существенных недостатков встраивания является отсутствие поддержки динамических запросов. Другой проблемой является то, что изменение синтаксиса языка программирования обычно приводит к нарушению работы средств рефакторинга, интегрированных сред разработки (Integrated Development Environment, IDE) и CASE-средств.

Интерфейсы уровня вызова. Доминирующим механизмом явного выполнения запросов является интерфейс уровня вызовов (call level interface, CLI) [], обеспечивающий языку программирования доступ к серверу баз данных на основе стандартизованного API [, ]. Ключевой характеристикой CLI является возможность выполнения запросов и команд базы данных, представленных в виде строк или других структур данных времени выполнения []. На рис. 3 показано, как запрос с рис. 2 может быть выполнен с использованием JDBC [].



Содержание  Назад  Вперед