|
|
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
Хочется, 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) это есть последняя строчка резалтсета. При дебаге тоже ничего не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 07:09 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 07:49 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
Спасибо. Ушел читать умные книжки... пока не понял почему так. Может кто нибудь объяснит? Буду очень признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 08:26 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
В коде 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); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 08:42 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
>> пока не понял почему так. Это потому, что list.add(account) добавляет в список не копию account, а указатель на account. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 09:07 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
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. рассказал как мог :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 09:22 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
Спасибо за подробные разъяснения... я и сам думал что где-то здесь собака зарыта.. так это что получается.. ArrayList list=new ArrayList(); Account account= new Account(); account.setId(1); list.add(account); /*-------------- много кода -------------- */ account.setId(2); return list; Так ведь засада получается. Положили одно в лист, а потом такая неожиданность. Хочется надеяться что если мыслить ссылками на объекты- все будет хорошо. Ушел читать умные книжки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 10:54 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
ХАХочется надеяться что если мыслить ссылками на объекты- все будет хорошо мыслить надо джавой :) thinking by java - книга такая есть кстати :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 11:32 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:31 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
riman читай могу русский вариант подогнать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:35 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 13:35 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
а что нового в 3ем издании? Можно мне тоже русский вариант увидеть. ... хотя нет:) мне, пожалуй еще второе долго читать..то что на столе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 14:04 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
Артем1 А.Грасоff™ riman читай могу русский вариант подогнать :) Было бы весьма неплохо. :) http://fpestde.net/java/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 14:35 |
|
||
|
Как сделать отображение ResultSet --> ArrayList
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™ Артем1 А.Грасоff™ riman читай могу русский вариант подогнать :) Было бы весьма неплохо. :) http://fpestde.net/java/ Спасибо, но URL конечно устрашающий :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=32862969&tid=2153125]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
96ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 458ms |

| 0 / 0 |
