遅刻の「言い訳」選手権

<%@ page contentType="text/html; charset=SHIFT_JIS"
import="java.sql.*,javax.naming.*,javax.sql.*,java.util.*" %>
<%@ page import = "java.util.Date" %>
<%@ page import = "java.text.DateFormat" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<%@page import="java.text.NumberFormat" %>
<% request.setCharacterEncoding("SHIFT_JIS"); %>

<%
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/workshop");
Connection db=ds.getConnection();

String name = request.getParameter("Name");
String busyo = request.getParameter("Shozoku");

PreparedStatement prdStt3=db.prepareStatement("INSERT INTO Rireki (Name,Busyo) VALUES(?,?)");
prdStt3.setString(1,name);
prdStt3.setString(2,busyo);;

prdStt3.executeUpdate();

out.println("名前:" + name + "<BR>");
out.println("所属部署:" + busyo + "<BR>");

prdStt3.close();
db.close();
%>

==========================
【環境】
Webサーバ:Tomcat5.5,apache2.0.49
DB:MySQL4.1
JAVA:JDK1.5.0.7
==========================

上記ソースでDBに情報を書き込もうとしましたが、うまくいきません。
半角英数字は登録できますが、かなは全角・半角ともに登録されていないようです。

パラメータに値そのものは入っているらしく、printlnで出力したところ、画面上で入力情報を確認出来ました。


どなたかお気づきの点がありましたら是非ともアドバイス下さい。
お願いいたします。

A 回答 (3件)

DataSourceがわからないのですが、


エンコーディングが間違っているのは確かなようです。
DriverManagerを使ってみられてはいかがでしょう?
-------------------------------------------------
Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS";
Connection con = DriverManager.getConnection(url);
-----------------------------------------------------
DataSourceが使えるときは、DSを使うというのが推奨されているようですが、
今回のご質問のように、DataSourceの記載が怪しいけれども内容がわからない
という場合は、DriverManagerで明示的にJAVAソース内で設定されてもよいかと思います。
それよりも、MySQL自身の設定でSJISを受け入れるようになっているのでしょうか??

参考URL:http://www.hellohiro.com/datasource.htm
    • good
    • 0

ごめんなさいNo1の回答は間違えました。



日本語で登録しようとしたとき、Tomcatでは例外は出てますか?
それともデータベースに登録されて、文字化けしますか?

この回答への補足

いえいえ!お答え頂けるだけでも嬉しいです。有難うございます。

御質問への答えですが、例外処理は出ません。
tomcatの処理そのものは正常に終了しています。
かな文字(全角、半角ともに)の場合、データベースに登録自体がされていないようです。
その部分だけ、何も入っていません。

ゴミでも入っているのかと思い、Webブラウザに情報を抽出して確認できるようにしてみましたが、やはり何も表示されませんでした。

《Web画面での抽出結果》
・・・・・・(前略)
<TD>AAA</TD> ←英数字でDBに登録した情報を呼び出した場合
<TD></TD>  ←かなでDBに登録した情報を呼び出した場合
・・・・・・(後略)

文字化けでも何でも値が入っていれば対策の練りようもありますが、それも叶わない状態です。。。

月曜日までに仕上げないと、上司に大目玉を食らってしまいます。
なにかお心当たりがございましたら是非とも御教授願います。

補足日時:2006/07/22 18:52
    • good
    • 0

データソースに登録するときに


SJISを指定しましたか?

この回答への補足

データベースを作成する時に、言語を指定しなければならないということでしょうか?
それでしたらやっていません。

=======================================
<%@ page contentType="text/html; charset=SHIFT_JIS" %>
<% request.setCharacterEncoding("SHIFT_JIS"); %>
=======================================

上記ソースに書いてあること以外に、特に言語を設定した記憶がありませんので。。。

よろしければ、データソース登録時に言語を設定する方法を教えて頂けませんか?

補足日時:2006/07/22 15:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報