Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать отображение ResultSet --> ArrayList / 14 сообщений из 14, страница 1 из 1
13.01.2005, 07:09
    #32862305
xa
xa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
Хочется,
1.чтобы из каждой строки выборки получился объект.
2. объект добавился в ArrayList

Вопрос: почему не канает такой код?

public static ArrayList returnAccountListOfDb(int orderId){
ArrayList list = new ArrayList();
String stmt="SELECT DISTINCT * FROM table;
Account account=new Account();

ResultSet res=DBhelper.getRs(stmt);
try{
while (res.next()) {
account.setAccountNum(res.getInt("ad.id"));
list.add(account);
}
}catch(Exception e){e.printStackTrace();}
return list;
}

Может кто сталкивался с сей удивительной весчью...

Оказывается что в list в итоге для всех индексов i list.get(i) это есть последняя строчка резалтсета.
При дебаге тоже ничего не ясно.
...
Рейтинг: 0 / 0
13.01.2005, 07:49
    #32862324
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   static  ArrayList returnAccountListOfDb( int  orderId){
ArrayList list =  new  ArrayList();
String stmt="SELECT DISTINCT * FROM table";

ResultSet res=DBhelper.getRs(stmt);
 try {
 while  (res.next()) {
Account account= new  Account();
account.setAccountNum(res.getInt("ad.id"));
list.add(account);
}
} catch (Exception e){e.printStackTrace();}
 return  list;
}
...
Рейтинг: 0 / 0
13.01.2005, 08:26
    #32862345
xa
xa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
Спасибо.
Ушел читать умные книжки... пока не понял почему так.
Может кто нибудь объяснит? Буду очень признателен.
...
Рейтинг: 0 / 0
13.01.2005, 08:42
    #32862366
Евгений Путилин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
В коде
Account account=new Account();

ResultSet res=DBhelper.getRs(stmt);
try{
while (res.next()) {
account.setAccountNum(res.getInt("ad.id"));


account создаеться только 1 раз и ты все перетираеш его значения.
А нужно создовать по одному экземпляру на каждую строку.
while (res.next()) {
Account account=new Account();
account.setAccountNum(res.getInt("ad.id"));
list.add(account);
...
Рейтинг: 0 / 0
13.01.2005, 09:07
    #32862387
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
>> пока не понял почему так.

Это потому, что list.add(account) добавляет в список не копию account, а указатель на account.
...
Рейтинг: 0 / 0
13.01.2005, 09:22
    #32862417
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
www.fun4me.narod.ru>> пока не понял почему так.

Это потому, что list.add(account) добавляет в список не копию account, а указатель на account.

2 XA

www.fun4me.narod.ru правильно сказал. и во все время выполнения
цикла while (rs.next()) {...} объект account у тебя один и тот же
(точнее - ссылка на него). происходит так (очень приближенно и грубо).

перед циклом ты создаешь экземпляр класса Account , и в
переменной account хранится ссылка на него. здесь под ссылкой
имеется в виду адрес памяти , например A:000040F0.

N-я итерация цикла while:
вызывая метод setAccountNum , jvm обращается к нашему адресу,
и прописывает целочисленное значение, например, по адресу A:000040F4
(типа со смещением в 4 байта храниться целочисленное значение поля
accountNum ; jvm в данном случае знает , что именно по этому
смещению хранится значение accountNum ).

таким образом, пройдя все итерации цикла, ты по сути сохранял в
list всегда один и тот же адрес A:000040F0.

рассказал как мог :)
...
Рейтинг: 0 / 0
13.01.2005, 10:54
    #32862647
ХА
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
Спасибо за подробные разъяснения... я и сам думал что где-то здесь собака зарыта..

так это что получается..

ArrayList list=new ArrayList();
Account account= new Account();
account.setId(1);
list.add(account);


/*--------------
много кода
--------------
*/

account.setId(2);

return list;

Так ведь засада получается. Положили одно в лист, а потом такая неожиданность.
Хочется надеяться что если мыслить ссылками на объекты- все будет хорошо.

Ушел читать умные книжки
...
Рейтинг: 0 / 0
13.01.2005, 11:32
    #32862765
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
ХАХочется надеяться что если мыслить ссылками на объекты- все будет хорошо

мыслить надо джавой :) thinking by java - книга такая есть кстати :)
...
Рейтинг: 0 / 0
13.01.2005, 12:31
    #32862951
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
...
Рейтинг: 0 / 0
13.01.2005, 12:35
    #32862969
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
riman читай
могу русский вариант подогнать :)
...
Рейтинг: 0 / 0
13.01.2005, 13:35
    #32863129
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
А.Грасоff™ riman читай
могу русский вариант подогнать :)

Было бы весьма неплохо. :)
...
Рейтинг: 0 / 0
13.01.2005, 14:04
    #32863229
xa
xa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
а что нового в 3ем издании?
Можно мне тоже русский вариант увидеть.
... хотя нет:) мне, пожалуй еще второе долго читать..то что на столе.
...
Рейтинг: 0 / 0
13.01.2005, 14:35
    #32863318
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
Артем1 А.Грасоff™ riman читай
могу русский вариант подогнать :)

Было бы весьма неплохо. :)

http://fpestde.net/java/
...
Рейтинг: 0 / 0
13.01.2005, 16:23
    #32863618
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать отображение ResultSet --> ArrayList
А.Грасоff™ Артем1 А.Грасоff™ riman читай
могу русский вариант подогнать :)

Было бы весьма неплохо. :)

http://fpestde.net/java/

Спасибо, но URL конечно устрашающий :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать отображение ResultSet --> ArrayList / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]