MySQL & mSQL



              

Простой доступ к базе данных - часть 2


Запросы выполнять немного сложнее, чем обновления, поскольку они возвращают информацию из базы данных в виде объекта ResultSet. ResultSet является интерфейсом, представляющим 0 или более строк, являющихся результатом запроса, обращенного к базе данных. В классе JDBC Statement имеется метод executeQuery(), работающий подобно executeUpdate(), за исключением того, что он возвращает из базы данных ResultSet. Метод executeQuery() возвращает ровно один ResultSet, тем не менее имейте в виду, что JDBC поддерживает извлечение множественных результирующих наборов для тех баз данных, которые это позволяют. Ни MySQL, ни mSQL не поддерживают множественные результирующие наборы. Однако важно помнить о такой возможности, когда вы изучаете код для работы с иным ядром базы данных, написанный кем-то другим. В примере 14-5 показан простой запрос. На рис. 14-2 изображена модель данных з таблице test.

Пример 14-5. Простой запрос

import Java, sql.*;

import Java, util.*;

public class Select {

public static void main(String argv[]) {

Connection con = null;

ResourceBundle bundle =ResourceBundle.getBundle("SelectResource");

try {

String url = bundle.getString("URL"); Statement stmt;

ResultSet rs;

Class.forName(bundle.getString("Driver")); // здесь осуществляется соединение

con = DriverManager,getConnection(url, "borg", "");

stmt = con.createStatement();

rs = stmt .executeQuery("SFI FCT* from test ORDER BY test_id");

System, out.print In("Полученные результаты:");

while(rs. next()) {

int a= rs.getInt("test_icT);

String str = rs.getString("test_val");

System.out.print(" ключ= " + a);

System.out.print(" строка= " + str);

System.out.print("\n");

}

stmt.close();

}

catch( SQLException e )

{

e. printStackTrace();

}

finally {

if( con != null ) {

try { con.close(); }

catch( Exception e ) { }

}

}

}

}

Приложение Select выполняет запрос и затем проходит по всем строкам ResultSet с помощью метода next(). До первого обращения к next() ResultSet не указывает ни на какую строку. Каждый вызов next () настраивает ResultSet на следующую строку. JDBC 2:0 вводит понятие результирующего набора с перемещением (scrollable). Если ваш экземпляр ResultSet позволяет перемещение, можно также обращаться к методу previous() для перемещения по результирующему набору в обратном направлении. Обработка строк заканчивается, когда next () возвращает false.




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