看板 Web_Design 關於我們 聯絡資訊
※ 引述《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