- - PR -
insert時のerrorについて
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-12-16 14:30
現在JavaBeansを使ってデータベースから
tableへの入力、削除を行なうページを作成中です。 ですが、以下のプログラムで行なったところ必ずSQLEXCEPTION ERROR を得てしまいます 環境は OS:RedHat9 MySQL: 4.1.7-standard java:j2sdk1.4.2_05 connecter:mysql-connector-java-3.0.16-ga 初心者ですので、簡単な見落しかもしれません。 厳しい御言葉でも結構ですので アドバイスを頂けないでしょうか また useUnicode=true&characterEncoding=EUC-JP としています import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import srcBeans.*; import java.sql.*; public class Check extends HttpServlet{ /***************** doPost ****************************/ public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException{ String message= null; HttpSession thisSession = req.getSession(); UserInformation user = (UserInformation)thisSession.getAttribute("userInf"); if (user == null ){ getServletContext().getRequestDispatcher("/jsp/error.jsp").forward(req, res); } res.setContentType("text/html; charset=EUC_JP"); //各パラメーターを取得 String p = req.getParameter("tname");// IDを取得 String tname = new String(p.getBytes("iso-8859-1"),"EUC_JP"); p = req.getParameter("time"); String time= new String(p.getBytes("iso-8859-1"),"EUC_JP"); LoginData data = new LoginData(user.getDate().toDBFormat(),tname,time,user.getUserID()); if(req.getParameter("input") != null) { try{ message = input(data); } catch(SQLException err) { message = "DB SQL error"; } catch(ClassNotFoundException err) { message = "Class not found error"; } } else if(req.getParameter("cancel") != null){ // キャンセル処理 try{ message = cancel(data); } catch(SQLException err) { message = "DB SQL error"; } catch(ClassNotFoundException err) { message = "class not found error"; } } //メッセージ表示画面へ req.setAttribute("msg",message); getServletContext(). getRequestDispatcher("/jsp/kekka.jsp").forward(req, res); } /***************** 予約処理 *****************************/ private synchronized String input(LoginData data) throws SQLException,ClassNotFoundException{ String message; if(data.getTime().length() ==0 ){ message = "時間帯が入力されていません"; } else{ LoginDB db = new LoginDB(); LoginData dbData = db.dataRead(data.getDate(),data.getTname()); if(dbData == null){ db.insertData(data); message = "予約を受け付けました"; } else{ message = "予約できませんでした"; } db.closeDB(); } return message; } /***************** キャンセル処理 *****************************/ private synchronized String cancel(LoginData data) throws SQLException,ClassNotFoundException{ String message; LoginDB db = new LoginDB(); LoginData dbData = db.dataRead(data.getDate(),data.getTname()); if(dbData == null){ message = "キャンセルできませんでした"; } else if(!dbData.getUserID().equals(data.getUserID())){ message = "予約した担当者でないとキャンセルできません"; } else{ if(db.deleteData(data) > 0){ message = "キャンセルしました"; } else{ message = "キャンセルできませんでした"; } } db.closeDB(); return message; } } | ||||||||
|
投稿日時: 2004-12-16 14:39
ソースだけじゃなくて、どんなエラーメッセージがでているのかも書いてください。
SQLExceptionが発生した、だけでなく、マシンがどのようなメッセージを出力したかが重要です。 あと、投稿する会議室は、DatabaseかJavaかどちらか一つにしてくださいね。 片方を削除するか、または「これ以降は○○のスレッドでお願いします」と記述してください。 | ||||||||
|
投稿日時: 2004-12-16 14:46
ちょっとみて気がつきましたが、これではデバッグなんか、できませんね。
発生するエラーを、片っ端から握りつぶしているようでは。 きっぱりはっきりと、「デバッグなんか、絶対しません」と 意思表示しているようなものですね。
下記のようにして、出力されたテキストを投稿してください。
[ メッセージ編集済み 編集者: Edosson 編集日時 2004-12-16 14:47 ] | ||||||||
|
投稿日時: 2004-12-16 14:48
すみませんでした。どちらに質問するのか適切か判断できませんでしたので、
以後はDatabeseのほうは削除しました エラーメッセージですがソースで SQLEXCEPTION ERROR をcatchした場合"DB SQL error"を表示するようにしていたものですから、細かい内容についてはわかりません 表示させようとはいたものの自分の力量が足らずコンパイルエラーばかりだして 半ばあきらめていました 捕捉としてひとつあります。 データのdeleteは可能でした | ||||||||
|
投稿日時: 2004-12-16 15:30
deleteが可能なのでしたら、
まずは、insertメソッドの、SQL文をチェックしてみてはいかがでしょうか。 | ||||||||
|
投稿日時: 2004-12-16 15:48
エラーメッセージの表示ですがやはり「DB SQL error」とだけ表示されます
またinsertの部分ですが public void insertData(LoginData data) throws SQLException{ String key = data.getDate()+data.getTname(); String sqlQuery = "INSERT INTO loginData(ID,time,user) VALUES ( '"+key+"','"+data.getTime()+"','"+data.getUserID()+"')"; statement.executeUpdate(sqlQuery); } となっています。先入観で無いと思いこんでいるのかもしれませんが 問題ありますか? | ||||||||
|
投稿日時: 2004-12-16 16:16
ソースを変更していないなら当たり前です。まず、他の方の回答をよく読んでスタックトレース を出力してからにしてください。
テーブル定義もLoginDataというクラスの内容も、ましてやどんなエラーが出ているかもわから ないのに問題があるかどうかわかるわけありません。 | ||||||||
|
投稿日時: 2004-12-16 16:28
「ブラウザに表示されない」という意味であれば、 ブラウザに表示するようにプログラムしていない限り、当たり前です。 サーバーのログか、サーバーを動かしているコンソールをみてください。 あるいは、ブラウザで表示するよう、プログラムするか。
「loginData」というのは、テーブル名なんですよね。 [ メッセージ編集済み 編集者: Edosson 編集日時 2004-12-16 16:30 ] | ||||||||
