現在javaとmysqlを用いてeclipseにて簡単なメモアプリを作成しております。
内容としてはメモのタイトル及び内容を書いて登録していくものなのですが、その際にjava.util.calenderで現在時刻を取得し、それも一緒に保存しようと思っています。
ただ保存の処理を行おうとすると
エラーメッセージ
Data truncation: Incorrect datetime value: 'null' for column 'INSERT_DATETIME' at row 1
とうまく渡すことができません。
java.util.calenderで取得した情報は別の何かに変換する必要があるのでしょうか?
よろしくお願いいたします。
java
1MemoServlet.java 2 3package pack; 4 5import java.io.IOException; 6 7一部省略 8 9 10/** 11 * 登録要求を処理します。 12 * 13 * @param req 14 * @param resp 15 * @return 16 * @throws ServletException 17 * @throws IOException 18 */ 19 private String doAddAction(HttpServletRequest req, HttpServletResponse resp) 20 throws ServletException, IOException { 21 try { 22 String memoId = req.getParameter("memo_id"); 23 String userId = req.getParameter("user_id"); 24 String title = req.getParameter("title"); 25 String content = req.getParameter("content"); 26 String Year = req.getParameter("year"); 27 String Month = req.getParameter("month"); 28 String Day = req.getParameter("day"); 29 String Hour = req.getParameter("hour"); 30 String Minute = req.getParameter("minute"); 31 String Second = req.getParameter("second"); 32 if (title == null && content == null) { 33 return doError(req, resp, "不正なパラメータです。"); 34 } 35 36 Memo targetMemo = new Memo(); 37 38 targetMemo.setId(memoId); 39 targetMemo.setUserId(userId); 40 targetMemo.setTitle(title); 41 targetMemo.setMemo(content); 42 43 Date date = getDate(Year, Month, Day, Hour, Minute, Second); 44 45 targetMemo.setInsertDate(date); 46 47 executeUpdate(createInsertSQL(targetMemo)); 48 49 // メモを取得する 50 Memo[] memos = getMemos(); 51 52 // メモを要求オブジェクトに格納する 53 req.setAttribute("memos", memos); 54 55 // 一覧を表示する 56 return JSP_BASE + "list.jsp"; 57 } catch (SQLException e) { 58 return doError(req, resp, e.getMessage()); 59 } 60 } 61 62 /** 63 * エラーを表示します。 64 * 65 * @param req 66 * @param resp 67 * @param message 68 * @return 69 * @throws ServletException 70 * @throws IOException 71 */ 72 73 private String doError(HttpServletRequest req, HttpServletResponse resp, 74 String message) throws ServletException, IOException { 75 req.setAttribute("message", message); 76 77 // エラーを表示する 78 return JSP_BASE + "error.jsp"; 79 } 80 81一部省略 82 83/** 84 * INSERT/UPDATE/DELETE文を実行します。 85 * 86 * @param sql 87 * @return 88 * @throws ServletException 89 */ 90 private int executeUpdate(String sql) throws SQLException { 91 Statement statement = null; 92 try { 93 // SQL文を発行 94 statement = getConnection().createStatement(); 95 int updateCount = statement.executeUpdate(sql); 96 97 return updateCount; 98 } catch (SQLException e) { 99 _pooledConnection = null; 100 throw e; 101 } finally { 102 if (statement != null) { 103 statement.close(); 104 statement = null; 105 } 106 } 107 } 108 /** 109 * メモ取得用のSQL文を生成します。 110 * 111 * @param where 112 * @return 113 */ 114 private String createSQL(String where) { 115 StringBuffer buf = new StringBuffer(); 116 buf 117 .append("SELECT MEMO.MEMO_ID,MEMO.USER_ID,USER.USER_ID,USER.USER_NAME,MEMO.TITLE,MEMO.MEMO,MEMO.INSERT_DATETIME,MEMO.UPDATE_DATETIME FROM USER,MEMO WHERE USER.USER_ID=MEMO.USER_ID"); 118 if (where != null) { 119 buf.append(" AND "); 120 buf.append(where); 121 } 122 return buf.toString(); 123 } 124 125 /** 126 * 日付オブジェクトを取得します。 127 * 128 * @param year 129 * @param month 130 * @param day 131 * @param hour 132 * @param minute 133 * @param second 134 * @return 135 * @throws ServletException 136 */ 137 private Date getDate(String year, String month, String day, String hour, String minute, String second) { 138 try { 139 Calendar calendar = Calendar.getInstance(); 140 calendar.clear(); 141 calendar.set(Integer.parseInt(year), Integer.parseInt(month) - 1, 142 Integer.parseInt(day),Integer.parseInt(hour), Integer.parseInt(minute), 143 Integer.parseInt(second)); 144 145 return new Date(calendar.getTimeInMillis()); 146 } catch (NumberFormatException e) { 147 return null; 148 } 149 } 150/** 151 * 追加用のSQL文を生成します。 152 * 153 * @param targetMemo 154 * @return 155 */ 156 private String createInsertSQL(Memo targetMemo) { 157 StringBuffer buf = new StringBuffer(); 158 buf.append("INSERT INTO "); 159 buf.append("MEMO"); 160 buf.append(" (MEMO_ID,USER_ID,TITLE,MEMO,INSERT_DATETIME,UPDATE_DATETIME)"); 161 buf.append(" VALUES('"); 162 buf.append(targetMemo.getId()); 163 buf.append("', '"); 164 buf.append(targetMemo.getUserId()); 165 buf.append("', '"); 166 buf.append(targetMemo.getTitle()); 167 buf.append("', '"); 168 buf.append(targetMemo.getMemo()); 169 buf.append("', '"); 170 buf.append(targetMemo.getInsertDate()); 171 buf.append("', '"); 172 buf.append(targetMemo.getUpdateDate()); 173 buf.append("')"); 174 175 return buf.toString(); 176 } 177
html
1add.jsp 2 3<%@ page language="java" contentType="text/html; charset=utf-8" %> 4<%@ page import="pack.User" %> 5<%@ page import="pack.Memo" %> 6<%@ page import="java.util.*" %> 7<%@ page import="java.text.*" %> 8<% 9 User currentUser = (User) request.getSession().getAttribute("currentUser"); 10 User[] users = (User[]) request.getAttribute("users"); 11%> 12<html> 13 <head> 14 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 15 <title>メモ入力</title> 16 <link rel="STYLESHEET" href="todo.css" type="text/css"> 17 </head> 18 <body> 19 <div align="center"> 20 <table border="0"> 21 <form action="todo" method="post"> 22 <input type="hidden" name="action" value="add_action"> 23 <tr> 24 <th class="add_field"> 25 メモID 26 </th> 27 <td class="add_field"> 28 <input type="text" name="memo_id" value="" size="24" maxlength="10"> 29 </td> 30 </tr> 31 <tr> 32 <th class="add_field"> 33 タイトル 34 </th> 35 <td class="add_field"> 36 <input type="text" name="title" value="" size="24" maxlength="20"> 37 </td> 38 </tr> 39 <tr> 40 <th class="add_field"> 41 内容 42 </th> 43 <td class="add_field"> 44 <input type="text" name="content" value="" size="24" maxlength="100"> 45 </td> 46 </tr> 47 <tr> 48 <input type="hidden" name="user_id" value="<%= currentUser.getId()%>"> 49 <td align="left"> 50 登録者 51 </td> 52 <td> 53 <%= currentUser.getName() %> 54 </td> 55 <td align="right"> 56 登録日時 57 </td> 58 <td class="add_field"> 59 60 <% 61 Calendar calendar = Calendar.getInstance(); 62 %> 63 <input type="hidden" name="year" value="" id="toshi"><label for="toshi"><%= calendar.get(Calendar.YEAR) %>/</label> 64 <input type="hidden" name="month" value="" id="tsuki"><label for="tsuki"><%= calendar.get(Calendar.MONTH) + 1 %>/</label> 65 <input type="hidden" name="day" value="" id="nichi"><label for="nichi"><%= calendar.get(Calendar.DAY_OF_MONTH) %>/ </label> 66 <input type="hidden" name="hour" value="" id="jikan"><label for="jikan"><%= calendar.get(Calendar.HOUR_OF_DAY) %>:</label> 67 <input type="hidden" name="minute" value="" id="hun"><label for="hun"><%= calendar.get(Calendar.MINUTE) %>:</label> 68 <input type="hidden" name="second" value="" id="byou"><label for="byou"><%= calendar.get(Calendar.SECOND) %></label> 69 </td> 70 <td> 71 <input type="submit" value="登録"> 72 </td> 73 </tr> 74 </form> 75 <tr> 76 <form action="todo" method="post"> 77 <input type="hidden" name="action" value="list"> 78 <td> 79 <input type="submit" value="一覧へ戻る"> 80 </td> 81 </form> 82 </tr> 83 </table> 84 </div> 85 </body> 86</html>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/26 05:14