Шифрование и секретность в Linux


Выборка данных из первой записи средствами JDBC



Листинг 12.9. Выборка данных из первой записи средствами JDBC

ResultSet newSet = null;

try {

newSet = s.executeQuery("SELECT * FROM book"):

} catch (SQLException se) {

System.out.printlnC'We got an exception while executing our query:" +

"This probably means that our SQL is invalid.");

Специфика использования JDBC с PostgreSQL

se.printStackTrace() :

System.exit(1):

}

try {



String value = newSet.getString(l);
// ПЛОХО: метод next() еще не вызывался

} catch (Exception e) {

System.out.phntlnC'We'll get an exception here, because we haven't" +

" stepped to the first row of the ResultSet yet.");

e.printStackTrace():

}

try {

newSet.next():

String value - newSet.getString(l);

} catch (SQLException se) {

System.out.printlnC'We'll only get an exception here if we've lost" +

"our connection, which isn't our fault.");

se.printStackTrace();

System.exit(l);

}

Следующая проблема тоже относится к объектам ResultSet, но она значительно проще первой. Вы не можете узнать количество записей, возвращенных в результате запроса, без вызова next с увеличением счетчика. Другими словами, в классе ResultSet не существует простого метода для получения количества записей в наборе. Отчасти это связано с тем, что JDBC может и не получать записи от PostgreSQL (и вообще не знать о существовании таких записей) до вызова next.

Последняя проблема менее очевидна. В многопоточных программах каждый программный поток должен работать с собственными объектами Statement и ResultSet. Дело в том, что в этих объектах хранятся данные состояния, и обращения к ним со стороны других программных потоков могут привести к повреждению этих данных.



Содержание раздела