- - PR -
jspとmysqlについて
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-05-21 18:51
いっきゅうさんへ:
exceptionはこのように出ました。 org.apache.jasper.JasperException: java.lang.NullPointerException at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666) at java.lang.Thread.run(Thread.java:534) | ||||
|
投稿日時: 2004-05-21 18:54
Takuさんへ:
ありがとうございます。autocommit(false);にしておきます☆ | ||||
|
投稿日時: 2004-05-21 19:02
おそらくパラメータのどれかがちゃんと取得できていないと思います。パラメータが取得できて
いるかどうか確認してください。 | ||||
|
投稿日時: 2004-05-21 19:20
uKさんへ:
変更指定されたデータNOを取得は出来たのですが、変更するデータの取得が出来ていません。 セレクトボタンの変更のデータの取得がよくわかりません。教えていただけませんか? | ||||
|
投稿日時: 2004-05-21 19:30
サブミットされているHTMLフォームがどのようになっているのかを書いてください。 セレクトボタンだけではなく、全体です。 また今までの書き込みを見る限り、同じ名前を持つパラメータが複数あるようですが、これらの パラメータは画面に出力されている順番で取得できることは保証されていません。したがって、 順番に頼らずに変更対象のデータを特定する必要があります。 | ||||
|
投稿日時: 2004-05-22 12:54
下のプログラムが全体のプログラムです。
<%@ page contentType="text/html; charset=Shift_JIS" import="java.sql.*,java.util.*,java.text.*" %> <%! //文字コードの変換 public static String cnvString(String s) { try { return new String(s.getBytes("8859_1"), "JISAutoDetect"); } catch(Exception e) { return null; } } %> <% String username = request.getParameter("username"); String password = request.getParameter("password"); String ses_username = (String)session.getAttribute("ses_username"); String db_password = null; Connection connection = null; Statement statement = null; String sql = null; ResultSet resultset = null; //ユーザー名が渡されていない場合(直接アクセス) if (username == null || username.equals("")) { //セッション情報がない場合はログインページへ戻す if (ses_username == null) { response.sendRedirect(response.encodeRedirectURL("index.jsp")); } } else { //DBを検索して私書箱情報をチェック try { //データベースの設定 String sv = "localhost"; //サーバ名 String db = "kadai"; //データベース名 String user = ""; //ユーザ名 String pass = ""; //パスワード String encode = "SJIS"; //文字コード //データベースに接続する Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://" + sv + "/" + db + "?user=" + user + "&password=" + pass + "&useUnicode=true&characterEncoding=" + encode; connection = DriverManager.getConnection(url); statement = connection.createStatement() ; sql = "select * from pobox where username='" + username + "'"; resultset = statement.executeQuery(sql); while(resultset.next()) { db_password = resultset.getString("password"); } //レコードが取得できなかった場合はログイン・エラー(ユーザーIDが存在しない) if (db_password == null || db_password.equals("")) { response.sendRedirect(response.encodeRedirectURL("loginerror.jsp")); } else { //取得できた場合は入力されたパスワードをチェック if (password.equals(db_password)) { session.setAttribute("ses_username", username); ses_username = username; //パスワードが合致しない場合はログイン・エラー } else { response.sendRedirect(response.encodeRedirectURL("loginerror.jsp")); } } //例外発生時処理 } catch(SQLException se) { out.println("Error:" + se.getMessage()); } finally { //DB関連オブジェクトの開放 resultset.close(); statement.close(); connection.close(); } } %> <!-- <script language="javascript"> function changesize(){ window.resizeTo(560,575); } window.onload=changesize; window.onresize=changesize; </script> --> <style> .tab { position:absolute; visibility:hidden; } .tabheader td { background-color: #d0d0d0; border: 1px solid black; padding: 0.2em; white-space: nowrap; A { text-decoration:none; } </style> <script> lay = nn = ie = gc = 0; if (document.layers) nn = 1; else if (document.all) ie = 1; else if (document.getElementById) gc = 1; function active(p) { for (i = 1; i <= lay; i ++) { if (nn) obj = document.layers["lay" + i]; if (ie) obj = document.all("lay" + i).style; if (gc) obj = document.getElementById("lay" + i).style; with (obj) { zIndex = 0; visibility = "hidden"; } } if (nn) obj = document.layers["lay" + p]; if (ie) obj = document.all("lay" + p).style; if (gc) obj = document.getElementById("lay" + p).style; with (obj) { zIndex = 1; visibility = "visible"; } } function init () { if (nn) list = document.layers; if (ie) list = document.all.tags("div"); if (gc) list = document.getElementsByTagName("div"); for (i = 0; i < list.length; i ++) if (list[i].id.match(/lay/)) lay ++; active(1); } onload = init; </script> <html> <head> <title>最後に追加されたidを取得する</title> </head> <body> <% //データベース設定 String sv = "localhost"; //サーバ名 String db = "kadai"; //データベース名 String user = ""; //ユーザ名 String pass = ""; //パスワード String encode = "SJIS"; //文字コード //データベースに接続する Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://" + sv + "/" + db + "?user=" + user + "&password=" + pass + "&useUnicode=true&characterEncoding=" + encode; Connection conn = DriverManager.getConnection(url); if (request.getMethod().equals("POST")) { String str=request.getParameter("hyouji"); if (str!=null) { try { //削除指定されたデータIDを取得する String[] ar = request.getParameterValues("c1"); //データを削除する Statement st = conn.createStatement(); String sql4 = "DELETE FROM kadai WHERE (id IN("; for(int i = 0; i < ar.length; i++) { sql4 += ar[i]; if (i < ar.length - 1) { sql4 += ", "; } else { sql4 += "))"; } } st.executeUpdate(sql4); //削除したデータのIDを表示する out.println("データを削除しました"); for(int i = 0; i < ar.length; i++) { out.println("<br>データID:" + ar[i]); } } catch (Exception e) { out.println(""); } try { //追加するデータを取得する int ID = Integer.parseInt(request.getParameter("ID")); String no = cnvString(request.getParameter("no")); String name = cnvString(request.getParameter("name")); //データを追加する Statement st = conn.createStatement(); String sql5 = "INSERT INTO kadai(ID,no,name) VALUES("+ ID +",'" + no + "','" + name + "')"; st.executeUpdate(sql5); out.println("データを追加しました"); //現在追加されたデータのidフィールドの値を取得する sql = "SELECT LAST_INSERT_ID()"; ResultSet rs = st.executeQuery(sql5); rs.next(); out.println("<p>追加されたデータのID:" + rs.getInt(1)); } catch (Exception e) { out.println(""); } try { //変更指定されたデータNOを取得する String[] aa = request.getParameterValues("c1"); String[] bb = request.getParameterValues("d1"); aa = bb; String[] no = request.getParameterValues("no"); String[] name = request.getParameterValues("name"); String[] shukketu = request.getParameterValues("shukketu"); String[] shukketu2 = request.getParameterValues("shukketu2"); String[] shukketu3 = request.getParameterValues("shukketu3"); String[] shukketu4 = request.getParameterValues("shukketu4"); String[] shukketu5 = request.getParameterValues("shukketu5"); String[] shukketu6 = request.getParameterValues("shukketu6"); String[] shukketu7 = request.getParameterValues("shukketu7"); String[] shukketu8 = request.getParameterValues("shukketu8"); String[] shukketu9 = request.getParameterValues("shukketu9"); String[] shukketu10 = request.getParameterValues("shukketu10"); String[] shukketu11 = request.getParameterValues("shukketu11"); String[] shukketu12 = request.getParameterValues("shukketu12"); String[] shukketu13 = request.getParameterValues("shukketu13"); String[] shukketu14 = request.getParameterValues("shukketu14"); String[] shukketu15 = request.getParameterValues("shukketu15"); String[] ten = request.getParameterValues("ten"); String[] hyouka = request.getParameterValues("hyouka"); for(int i = 0; i < aa.length; i++){ //変更するデータのを取得する Statement st = conn.createStatement(); String sql6 = "UPDATE kadai SET " + " no = '" + no[i] + "', name = '" + name[i] + "',shukketu = '" + shukketu[i] + "',shukketu2 = '" + shukketu2[i] + "',shukketu3 = '" + shukketu3[i] + "',shukketu4 = '" + shukketu4[i] + "',shukketu5 = '" + shukketu5[i] + "',shukketu6 = '" + shukketu6[i] + "',shukketu7 = '" + shukketu7[i] + "',shukketu8 = '" + shukketu8[i] + "',shukketu9 = '" + shukketu9[i] + "',shukketu10 = '" + shukketu10[i] +"', shukketu11 = '" + shukketu11[i] + "',shukketu12 = '" + shukketu12[i] + "',shukketu13 = '" + shukketu13[i] + "',shukketu14 = '" + shukketu14[i] + "',shukketu15 = '" + shukketu15[i] + "', ten = " + ten[i] + ", hyouka = '" + hyouka[i] + "' WHERE ID =" +aa[i]; st.executeUpdate(sql6); } out.println("+shukketu+"); //変更したデータを表示する out.println("データを変更しました"); } catch (Exception e) { out.print(""); } } } //データを取り出す Statement st2 = conn.createStatement(); String sql2 = "SELECT * FROM kadai"; //実行するSQL ResultSet rs2 = st2.executeQuery(sql2); //取り出したデータを表示する out.println("<table border=\"1\">"); out.println("<tr>"); out.println("<td> </td>"); out.println("<td>ID</td>"); out.println("<td>学籍番号</td>"); out.println("<td>名前</td>"); out.println("<td>1回目</td>"); out.println("<td>2回目</td>"); out.println("<td>3回目</td>"); out.println("<td>4回目</td>"); out.println("<td>5回目</td>"); out.println("<td>6回目</td>"); out.println("<td>7回目</td>"); out.println("<td>8回目</td>"); out.println("<td>9回目</td>"); out.println("<td>10回目</td>"); out.println("<td>11回目</td>"); out.println("<td>12回目</td>"); out.println("<td>13回目</td>"); out.println("<td>14回目</td>"); out.println("<td>15回目</td>"); out.println("<td>点数</td>"); out.println("<td>評価</td>"); out.println("</tr>"); out.println("<form method=\"POST\" action=\"" + request.getRequestURI() + "\">"); while (rs2.next()) { out.println("<tr>"); out.println("<td><input type=\"checkbox\" name=\"c1\" value=\"" + rs2.getInt("id") + "\"></td>"); out.println("<input type=\"hidden\" name=\"d1\" value=\"" + rs2.getInt("ID") + "\">"); out.println("<td>" + rs2.getInt("ID") + "</td>"); out.println("<td>" + rs2.getString("no") + "</td>"); out.println("<td><input type=\"text\" name=\"name\" value=\"" + rs2.getString("name") + "\" size=\"\"></td>"); %> <td> <select name="shukketu"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu2"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu3"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu4"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu5"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu6"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu7"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu8"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu9"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu10"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu11"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu12"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu13"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu14"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <td> <select name="shukketu15"> <option>出席</option> <option>遅刻</option> <option>欠席</option> </select></td> <% int j; out.println("<td>"); out.println("<select name=\"ten\">"); for (j = 0; j <= 100; j++) { out.println("<option>" +j+ "</option>"); } out.println("</select>"); out.println("</td>"); %> <% out.println("<td>" + rs2.getString("hyouka") + "</td>"); out.println("</tr>"); } out.println("<tr>"); out.println("<td colspan=\"4\">"); out.println("<input type=\"submit\" name=\"hyouji\" value=\"削除\"</td>"); out.println("<input type=\"submit\" name=\"hyouji\" value=\"変更\"</td>"); out.println("</tr>"); out.println("</form>"); out.println("</table>"); out.println("<form method=\"POST\" action=\"" + request.getRequestURI() + "\">"); out.println("<tr>"); out.println("<td><input type=\"submit\" name=\"hyouji\" value=\"追加\"></td>"); out.println("<td><input type=\"text\" name=\"ID\" size=\"8\"></td>"); out.println("<td><input type=\"text\" name=\"no\" ></td>"); out.println("<td><input type=\"text\" name=\"name\"></td>"); out.println("</tr>"); out.println("</form>"); out.println("</table>"); //データベース接続を閉じる conn.close(); %> </body> </html> | ||||
