作者TonyQ (骨頭)
看板Web_Design
標題Re: [問題] Jsp RecordSet問題
時間Tue Oct 9 16:11:35 2007
※ 引述《forkome (丁丁是個人材)》之銘言:
: Connection conn= DriverManager.getConnection(url,user,password);
: Statement stmt = conn.createStatement();
: String sql1 = "select distinct topic from school";
: ResultSet rs1 = stmt.executeQuery(sql1);
: while(rs1.next()){
: sql2="select dept from school where topic='"+rs1.getString(1)+"'";
: rs2 = stmt.executeQuery(sql2);
: out.println(rs2.getString(1));
: rs2.close();
^^^^^^^^^^^
我覺得這裡應該是最大的問題
可能跟Connection有關係 , 不過不大確定
: }
: 錯誤訊息java.sql.SQLException: [Microsoft
: ][SQLServer 2000 Driver for JDBC]Object has been closed.
: 難道stmt不能重覆使用嗎?還是另有原因
: 小弟把rs1的值當作rs2的搜尋條件,結果不能用
我會建議你寫成 join形式 或者用別種方式下sql,
select的成本很高,寫成這樣當資料量很大的時候很傷。
你的原意應該是要針對每間學校的topic取出dept吧
其實你可以寫成
"select dept from school order by topic " (group by應該也可以...)
這樣同一個topic的dept就會排在一起了
一次也可以處理比較多的資料
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 語 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼
*◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂
~telnet://tony1223.no-ip.info
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.59.247
推 forkome:大概知道原因了statement只能執行一次sql 10/09 16:31
→ forkome:沒用join很傷,但裡面資料要多次重覆使用,而不是只呈現 10/09 16:31
→ forkome:看到一些文章說要採用MVC架構,還在研究中 10/09 16:32
→ forkome:謝謝TonyQ的回答 10/09 16:33
→ TonyQ:要多次重複使用就存起來用~ 10/09 16:51