- PR -

データをデータベースへ保存するメソッドの書き方

1
投稿者投稿内容
mk
会議室デビュー日: 2006/09/18
投稿数: 10
投稿日時: 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";
}
}
よろしくお願いします。
どせい
大ベテラン
会議室デビュー日: 2006/10/25
投稿数: 145
投稿日時: 2007-02-13 23:10
引用:

mkさんの書き込み (2007-02-13 22:57) より:
本を片手にjavaを学習しているのですが、データベースへ保存されません。
メソッドの書き方に問題があるのでしょうか、"top"ページに返ります。
public String addUser() throws Exception{
boolean blResult=true;

String strPassword = this.getRandomPassword(8);
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";
}
}
よろしくお願いします。


何をどう「よろしく」なのかは知らないが。

しかもコードにツッコミどころがけっこうあるんだが…
とりあえず、データベース接続/切断から順に、一つ一つ確認しながら機能を増やしなよ。
一度に全部やろうとするから、問題点が見えにくいんだよ。

--
なんでエラーコード1062だけ別処理にしてるんだろう。
そもそもDBMSはなんだろうな。

[ メッセージ編集済み 編集者: どせい 編集日時 2007-02-13 23:27 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-02-13 23:29
SQLをSystem.out.printlnで出力してみましょう。
そのSQLをDB用のコンソール等で実行できるか試してみましょう。

あと、質問するときは、他人が分かるように書きましょう。
「"top"ページに返ります。 」なんて言われても、
それがWEBなのか何なのか全く分かりませんし、
TOPページに返るのが問題なのか、それが仕様なのかも全く分かりません。

それに、例外がコンソール等に出力されているはずです。
そういう情報も提示しましょう。回答者はエスパーじゃないので、
だれも、あなたの目の前で起こったことがわかりません。

どせいさんも仰っていますが、最小限のコードから試しましょう。
DBに接続できていますか?
それが確認できていますか?
SQLが正しいですか?
mk
会議室デビュー日: 2006/09/18
投稿数: 10
投稿日時: 2007-02-14 08:07
どせい様、かつのり様、返答ありがとうございました。
言葉足らずで申し訳ありませんでした。
ひとつひとつ確認してみました。結果、
sql文を試してみて、ユニークな列に同じ文字列を入れようとしていたために、実行されませんでした。
コードの変更はなしですみました。
お騒がせしました。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-02-14 12:26
>コードの変更はなしですみました。

このままのコードで、第二、第三の不幸が発生しないことをお祈りいたします。
1

スキルアップ/キャリアアップ(JOB@IT)