Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Работа с БД в java.


Автор: sergush 30.12.2005, 01:32
1. Есть таблица с ключевым полем-счетчиком. При добавлении записи в таблицу этот счетчик заполняется сам. Можно ли узнать значение ключевого поля добавляемой записи без повторного поиска? Конечно же при работе с java.
2. Можно ли узнать количество записей в таблице без полного просмотра всех ее записей? Или как можно узнать в java результат такого запроса "SELECT COUNT(*) FROM tableName;"?
3. Может у кого есть любая литература по java.sql на русском. Поделитесь mailto:sergush@server.by.
Заранее спасибо.

Автор: sergush 30.12.2005, 01:50
По первому вопросу нашел тему на вашем форуме. Сори, что не додумался сделать этого раньше.

Автор: batigoal 30.12.2005, 09:02
Цитата(sergush @ 30.12.2005, 02:32)
3. Может у кого есть любая литература по java.sql на русском. Поделитесь mailto:sergush@server.by.
Заранее спасибо.

Лучше воспользуйся мануалом: http://java.sun.com/developer/onlineTraining/Database/JDBC20Intro/JDBC20.html
А русский вариант у меня, кажется, дома был, вечером посмотрю. Но там только самые-самые основы.

Автор: AntonSaburov 30.12.2005, 13:25
Тут тоже можно поискать http://forum.vingrad.ru/index.php?showtopic=34063

Автор: LSD 30.12.2005, 14:05
Цитата(sergush @ 30.12.2005, 01:32)
Или как можно узнать в java результат такого запроса "SELECT COUNT(*) FROM tableName;"?

Код
PreparedStatement statement = connection.prepareStatement("select count(*) from my_table");
ResultSet resultSet = statement.executeQuery();
if(resultSet.first())
  System.out.println("In table my_table " + resultSet.getInt(1) + " rows");
resultSet.close();
statement.close();

Автор: Guest 31.12.2005, 01:46
LSD спасибо. Раньше и сам так пробовал, да почему-то не работало. Наверное first/next() забыл. Мало опыта еще наверное, чтобы сразу понять, что значат все эти исключения.

Автор: LSD 31.12.2005, 01:52
Цитата(Guest @ 31.12.2005, 01:46)
Наверное first/next() забыл.

Вначале курсор помещяется перед первой строкой резальтируещего запроса, поэтому без first()/next() всегда будет ошибка. Это сделано потому для того, что бы:
1. поведение всегда было единообразным, даже если результат запроса содержит 0 строк
2. удобно делать итерацию по результатам while(resultSet.next())


Цитата(Guest @ 31.12.2005, 01:46)
LSD спасибо.

Пожалуйста. Зарегистрируйся и заходи почаще smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)