- - PR -
MySQLの表示について。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-31 20:16
MySQLで作ったものを表示することについて質問があります。
bean_dbSearch.javaと、dbMvc.jspを使って、表示しようとしたら、 java.lang.NullPointerExceptionというエラーが出たので、 初期化が必要としり、 private ArrayList result; のあとに、new ArrayList() を付け加えて、表示したところ、dbMvc.jspの←のある部分だけが、表示されるだけで、MySQLで作った部分は何も表示されません。 助けていただけないでしょうか。 bean_dbSearch.javaと、dbMvc.jspは、以下のとおりです。 ======bean_dbSearch.java========================= package dbkit; import java.io.*; import java.util.*; import java.sql.*; public class bean_dbSearch implements Serializable { private ArrayList result = new ArrayList(); private class Kit { public String id; public String cho; public String za; public String su; } public bean_dbSearch(){} public void execute(){ try{ Class.forName("org.gjt.mm.mysql.Driver"); Connection db=DriverManager.getConnection("jdbc:mysql:///dbkit?user=****&password=****&useUnicode=true&characterEncoding=SJIS"); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM TABLE1 left join TABLE2 on TABLE1.ID=TABLE2.ID"); result=new ArrayList(); while(rs.next()){ Kit ta=new Kit(); ta.id = rs.getString("ID"); ta.za = rs.getString("ZA"); ta.su = rs.getString("SU"); ta.cho = rs.getString("CHO"); result.add(ta); } sttSql.close(); db.close(); }catch(Exception e){ e.printStackTrace(); } } public int getResultCount(){ return result.size(); } public String getId(int index){ Kit ta=(Kit)result.get(index); return ta.id; } public String getCho(int index){ Kit ta=(Kit)result.get(index); return ta.cho; } public String getZa(int index){ Kit ta=(Kit)result.get(index); return ta.za; } public String getSu(int index){ Kit ta=(Kit)result.get(index); return ta.su; } } ================================================= ========dbMvc.jsp================================ <%@ page contentType="text/html; charset=Shift_JIS" %> <jsp:useBean id="dbb" class="dbkit.bean_dbSearch" scope="page" /> <html> <head> <title>dbkit</title> </head> <body> <h1 style="background:#cccccc">kitmaria</h1> <table border="0"> <tr style="background:#00ccff"> <th>No.</th><th>za</th><th>su</th><th>cho</th>←ここの部分 </tr> <% dbb.execute(); for(int i=0;i<dbb.getResultCount();i++){ %> <tr style="background:#ffffcc"> <td><%=dbb.getId(i)%></td> <td><%=dbb.getZa(i)%></td> <td><%=dbb.getSu(i)%></td> <td><%=dbb.getCho(i)%></td> <% } %> </table> </body> </html> ================================================ 環境は Tomcat5.0 WinXP j2sdk1.4.2_05 MySQL です。 どうかご教授お願いします。 [ メッセージ編集済み 編集者: fuu 編集日時 2004-11-01 00:08 ] |
|
投稿日時: 2004-10-31 22:10
こんばんは。
> private ArrayList result; のあとに、new ArrayList() を付け加えて、表示したところ、dbMvc.jspの←のある部分だけが、表示されるだけで、MySQLで作った部分は何も表示されません。 </tr>を付けてないからではないでしょうか? HTMLソースを表示して、ちゃんとしたHTMLになっているか確認してみてください。 |
|
投稿日時: 2004-11-01 00:17
torakiyojp様、返信ありがとうございます。
></tr>を付けてないからではないでしょうか? とは、 <% dbb.execute(); for(int i=0;i<dbb.getResultCount();i++){ %> <tr style="background:#ffffcc"> <td><%=dbb.getId(i)%></td> <td><%=dbb.getZa(i)%></td> <td><%=dbb.getSu(i)%></td> <td><%=dbb.getCho(i)%></td> <% } %> の部分のことでしょうか? 参考にしている本を見直したところ、</tr>は<% } %>の前に置くようには、書いてありませんでした。 これの基となるものが入っているCDから、再度、取ってきて確認したところ、やはり、</tr>は<% } %>の前に置くようには、書いてありませんでした。 そして、HTMLソースの表示を確認したところ、MySQLの部分は、ありませんでした。 どのようにすれば、表示できるのでしょうか。 教えてください。お願いします。 |
|
投稿日時: 2004-11-01 12:00
executeメソッド内で例外が発生した場合、スタックトレースの表示だけして処理を続行するようにしているようですが、executeメソッドが成功したことは確認しているのでしょうか。
|
|
投稿日時: 2004-11-01 21:52
こんばんは。
> そして、HTMLソースの表示を確認したところ、MySQLの部分は、ありませんでした。 HTMLソースにもないということは、HTMLに何もエラーが吐き出されてないのであれば、dbb.getResultCount()が0ということですね。 ukさんもおっしゃていますが、executeメソッドは成功していますか? 念のためですが、"SELECT * FROM TABLE1 left join TABLE2 on TABLE1.ID=TABLE2.ID"というSQLを発行すると、結果は0件ではなく、返って来ますか?(この質問は少し失礼かもしれません。気分を害されたらすみません。) まずは、ukさんおっしゃる通り、executeメソッドで例外を握りつぶしていないか、確認してみてください。 [ メッセージ編集済み 編集者: torakiyojp 編集日時 2004-11-01 21:55 ] |
1