ちょっと先の未来クイズ第4問

以下の様な開発環境でシステムを構築しています。
OS:windowsXP
DB:Microsoft Access 2002
j2sdk:1.4.2_05
Tomcat:4.1.30

Web上で登録画面を表示、登録されたデータをサーブレット経由でDBに登録しようとしたところ、「パラメータが少なすぎます」というメッセージが出て登録できませんでした。
DBおよびSQL構文のエリア名の記入ミスも調べましたが問題ない模様です。
AccessのODBCドライバ(MDAC2.5)について調べたところ、MDAC2.5を使用したSQL文では二重引用符(”)を文字列リテラルとして使用できないようです。
この問題を回避するよい方法があれば、ぜひ教示願います。

<コーディング内容>
//postされた内容を受け取る
String wkkanri = request.getParameter(“kanri_No”);
String wkroom = request.getParameter(“room_No”);
-------------------------------------------------
//ドライバクラスのロード、DB接続
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection con = DriverManager.getConnection(“jdbc:odbc:syataku”);
Statement stmt = con.createStatement();

//insert用sql文の発行
String sql = “insert into kihon(kanri_No,room_No) values(wkkanri,wkroom)”;
Stmt.executeUpdate(sql);

A 回答 (1件)

クォートが全角なのは記載ミスですよね。



例えば、wkkanri に K001 、wkroom に 101 とか入っている
として、Accessに渡したいSQLは

insert into kihon(kanri_No,room_No) values('K001',101)

になります。
しかしお書きになった内容は

insert into kihon(kanri_No,room_No) values(wkkanri,wkroom)

なので、Access側ではエラーになります。
String sql に連結させて、正しいSQLを動的に作ってあげないと。

String sql = "insert into kihon(kanri_No,room_No) values('" + wkkanri + "'," + wkroom + ")";

とかでは?
DB側の型がわからないので、その辺は自助努力で。

もしくはパラメータバインドと言う方法もありますが、まずは
今のやり方を完遂させた方がよいでしょう。
    • good
    • 0
この回答へのお礼

 全角なのは、環境が別の為、一旦Wordへ打ってそれを貼り付けてしまったからです。油断しました(汗)
頂いたアドバイスを元に何とかDBへの情報登録が出来るようになりました。
御礼が遅くなりましたが、有難う御座いました。

お礼日時:2004/12/24 16:38

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

関連するカテゴリからQ&Aを探す


おすすめ情報