- - PR -
データをデータベースへ保存するメソッドの書き方
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-13 22:57
本を片手にjavaを学習しているのですが、データベースへ保存されません。
メソッドの書き方に問題があるのでしょうか、"top"ページに返ります。 public String addUser() throws Exception{ boolean blResult=true; String strPassword = this.getRandomPassword(; Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/board"); Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); String strSql = "INSERT INTO user (login_name,password,nick_name,email) " + "VALUES ('" + TextConv.beforeSql(loginname) + "'," + "password('" + TextConv.beforeSql(strPassword) + "')," + "'" + TextConv.beforeSql(nickname) +"'," + "'" + TextConv.beforeSql(email) + "')"; try{ stmt.executeUpdate(strSql); }catch (SQLException e){ if(e.getErrorCode()==1062){ blResult=false; }else{ throw new Exception(e.getMessage()+"?n"+strSql); } } conn.close(); if(blResult){ return "register2"; }else{ return "top"; } } よろしくお願いします。 | ||||
|
投稿日時: 2007-02-13 23:10
何をどう「よろしく」なのかは知らないが。 しかもコードにツッコミどころがけっこうあるんだが… とりあえず、データベース接続/切断から順に、一つ一つ確認しながら機能を増やしなよ。 一度に全部やろうとするから、問題点が見えにくいんだよ。 -- なんでエラーコード1062だけ別処理にしてるんだろう。 そもそもDBMSはなんだろうな。 [ メッセージ編集済み 編集者: どせい 編集日時 2007-02-13 23:27 ] | ||||
|
投稿日時: 2007-02-13 23:29
SQLをSystem.out.printlnで出力してみましょう。
そのSQLをDB用のコンソール等で実行できるか試してみましょう。 あと、質問するときは、他人が分かるように書きましょう。 「"top"ページに返ります。 」なんて言われても、 それがWEBなのか何なのか全く分かりませんし、 TOPページに返るのが問題なのか、それが仕様なのかも全く分かりません。 それに、例外がコンソール等に出力されているはずです。 そういう情報も提示しましょう。回答者はエスパーじゃないので、 だれも、あなたの目の前で起こったことがわかりません。 どせいさんも仰っていますが、最小限のコードから試しましょう。 DBに接続できていますか? それが確認できていますか? SQLが正しいですか? | ||||
|
投稿日時: 2007-02-14 08:07
どせい様、かつのり様、返答ありがとうございました。
言葉足らずで申し訳ありませんでした。 ひとつひとつ確認してみました。結果、 sql文を試してみて、ユニークな列に同じ文字列を入れようとしていたために、実行されませんでした。 コードの変更はなしですみました。 お騒がせしました。 | ||||
|
投稿日時: 2007-02-14 12:26
>コードの変更はなしですみました。
このままのコードで、第二、第三の不幸が発生しないことをお祈りいたします。 |
1