• 締切済み

JavaBeansについて・・・

日頃お世話になっています。Beansを学んでいるのですが、聞きたいことがあります。まず下記の文で <Beans文> import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class bean_dbInsert implements Serializable { public bean_dbInsert(){} public void execute(){ try{ Class.forName("org.gjt.mm.mysql.Driver"); Connection db=DriverManager.getConnection("jdbc:mysql://localhost/jsp10?user=jsp10&password=jsp10&useUnicode=true&characterEncoding=Shift_JIS"); Statement sttSql=db.createStatement(); sttSql.execute("insert into softlist(nam,url,gdate,grade,memo) values('サイト名','http://***.***.com/','2004/9/15',5,'サイトの説明')"); sttSql.close(); db.close(); }catch(Exception e) { e.printStackTrace(); } } } という文があったとします。ここではDBにサイト名~サイトの説明を登録するというものなのですが、コマンドプロンプトでコンパイルが成功し、JSPで表示に成功したにも関わらず、DBにはこのサイトの情報が登録されていないのです。DB接続先等も確認し、再度やってみたのですが、一向に先に進みません。この状況では何が原因だと思われますでしょうか?意見等をお願いいたします。

みんなの回答

回答No.3

> >"insert into softlist(nam,url,gdate,grade,memo) values('サイト名','http://***.***.com/','2004/9/15',5,'サイトの説明')"をプログラムからではなく手動で実行するとDBは更新されますか? > 更新されませんでした。ちなみに、DB設定等には、MySQLを使用しています。 まず実行したいSQLが手動で実行できなければ、当然、プログラムでも実行できません。 手動でSQLを実行した場合にどんなエラーが出ていますか?

回答No.2

以下補足要求。 補足要求1 > JSPで表示に成功したにも関わらず、DBにはこのサイトの情報が登録されていないのです。 > commitを入れてみたのですが、やっぱり表示されませんでした(-_-;)。 "JSPで表示に成功"とはどういう状態でしょうか? 補足要求2 Exceptionは全く出ていませんか? 補足要求3 "insert into softlist(nam,url,gdate,grade,memo) values('サイト名','http://***.***.com/','2004/9/15',5,'サイトの説明')" をプログラムからではなく手動で実行するとDBは更新されますか?

hurann
質問者

補足

回答ありがとうございます。 >"JSPで表示に成功"とはどういう状態でしょうか? サーブレット文にある、「データが追加されました」という表示が出ます。 >Exceptionは全く出ていませんか? JSPで実行したときは何も出てはいなかったです。ただ気になるのが、Tomcat 4.0.3を使っているのですが、JSP表示に成功すると、Tomcatの起動画面にエラーみたいな文章が出てしまうということなのです。 >"insert into softlist(nam,url,gdate,grade,memo) values('サイト名','http://***.***.com/','2004/9/15',5,'サイトの説明')"をプログラムからではなく手動で実行するとDBは更新されますか? 更新されませんでした。ちなみに、DB設定等には、MySQLを使用しています。

回答No.1

commitを切ってないですよ。 db.close(); の前に db.commit(); してみてください。 MySQLのコネクションは基本的にデフォルトで AutoCommitだと思うのですが、 実際にはDriverManagerからConnectionを 直接取得しているわけではないですよね? DataSourceの設定にもよりますが commitは明示的に呼ぶべきだと思います。

hurann
質問者

補足

回答ありがとうございます。commitを入れてみたのですが、やっぱり表示されませんでした(-_-;)。ちなみに、サーブレット文が以下のようになりますが、こっちで何か異常はありませんでしょうか? <サーブレット文> import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class srv_dbInsert extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); bean_dbInsert objIns=new bean_dbInsert(); objIns.execute(); out.println("データを追加しました"); out.println("</body></html>"); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doGet(request,response); } }

関連するQ&A

専門家に質問してみよう