Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #52, МАРТ 2005 г.

Свидание с Оракулом

Константин Клягин

Спецвыпуск: Хакер, номер #052, стр. 052-032-4


Работаем с данными: C++

Раньше, чтобы достучаться к Oracle из программы, написанной на C или C++, приходилось пользоваться OCI (Oracle Call Interface), который, хотя и был изрядно гибким, страдал главным недостатком универсальных решений - отсутствием легких путей. Требовалось вызвать как минимум пять разных функций библиотеки, чтобы сделать простой запрос к БД. Кроме этого, приходилось выделять память для множества структур, вследствие чего нередко случались утечки. Для упрощения кодинга были написаны десятки библиотек-надстроек, как для C, так и для C++. Каждый стремился написать для этого свое изделие, и в программизме под Oracle царила изрядная неразбериха.

Наконец, подумав в течение довольно продолжительного времени, ребята решили предоставить C++ разработчикам более удобный и, что немаловажно, стандартный интерфейс. Называется он OCCI. Пользоваться им просто, основы этого процесса можно понять с помощью небольшого откомментированного листинга, который лежит на нашем диске (файл – occi.txt).

Работаем с данными: PHP

Помимо C++, с базами Oracle можно работать из массы других языков программирования. API есть под все. Возьмем излюбленный инструмент web-девелопера - PHP. Тут у нас имеются три интерфейса для доступа. Это ODBC, старая (стандартная поддержка) Oracle и, наконец, самый гибкий и продвинутый интерфейс - OCI (Oracle 8 в доке). Его и рассмотрим.

Коннект:

$c = oci_connect("scott", "tiger", "orcl")

or die("cannot connect");

Вставка записи:

$s = oci_parse($c, "insert into phonebook values ('Ushat Pomoev', '765-XX-XX')");

oci_execute($s);

Выборка всех записей:

$s = oci_parse($c, "select * from phonebook");

oci_execute($s);

while(oci_fetch($s)) {

print "name: ".oci_result($s, "NAME").

"\tphone: ".oci_result($s, "PHONE")."\n";

}

Это конец:

oci_free_statement($s);

oci_close($c);

Описание этих и всех остальных функций есть прямо в стандартном мануале, поэтому оставлю его изучение на совесть читателя (полюбопытствуй заодно и на нашем диске). Вообще, за что я люблю PHP, так это за мануал. Все без исключения библиотеки, стандартные и опциональные, в нем описаны. Поэтому не надо бороздить просторы интернета в поисках нужной информации или примеров. Все это входит в комплект PHP.

Работаем с данными: Java

В "Жабе" работа с любой базой данных - задача простая. Есть JDBC, а в поставке Oracle к нему имеется драйвер. Код получается таким. Для начала зарегистрируем драйвер:

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

Теперь откроем соединение:

Connection conn =

DriverManager.getConnection("jdbc:oracle:oci8:@", "scott", "tiger");

Для каждого запроса к базе данных нам нужен экземпляр класса Statement. Сделаем insert:

Statement istmt = conn.createStatement();

istmt.execute("insert into phonebook values ('Zabeg Debilov', '456-XX-XX')");

istmt.close();

Теперь select:

Statement stmt = conn.createStatement();

ResultSet rset = stmt.executeQuery("select name, phone from phonebook");

Назад на стр. 052-032-3  Содержание  Вперед на стр. 052-032-5