基本的な質問ですいません。
jspで画面から入力した内容をDB接続してInsertするようにしたいのですが、
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?,?,?,?,?,?,?,?,?,0,'login','login'From employee_info' at line 1
上記のようなエラーが表示されてしまいます。
調べたらSQLの文で出るエラーということでしたので一度、上記の?の部分を
DBに保存できるような値を入力してDBで直接SQLを流したのですが、
その時には問題なくDBにInsertすることが出来ましたので、画面からできない理由が
よくわからないです。
詳しいかたがいらっしゃいましたらご教授お願いいたします。
因みにDAOで使用しているSQLは以下のようになります。
String Insertsql =
"INSERT INTO company.employee_info
(employee_id, name, name_hiragana,birthday,sex,mail_address,company_info_id,business_manager,department,commissioning_status,is_deleted,created_id,modified_id)
SELECT COALESCE(MAX(employee_id)+1,1),?,?,?,?,?,?,?,?,?,0,'login','login'From employee_info";
PreparedStatement pStmt = conn.prepareStatement(Insertsql);
pStmt.setString(1,employee_model.getName());
pStmt.setString(2,employee_model.getName_hira());
pStmt.setString(3,employee_model.getBirthday());
pStmt.setInt(4,employee_model.getSex());
pStmt.setString(5,employee_model.getMail_address());
pStmt.setString(6,employee_model.getCompany());
pStmt.setString(7,employee_model.getBusiness_manager());
pStmt.setInt(8,employee_model.getDepartment());
pStmt.setInt(9,employee_model.getCommissioning_status());
//Insert文を実行
pStmt.executeUpdate(Insertsql);
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>これはSQLが悪いのか教えてほしいです
これはよラーの示す通り、JSPで入力した文字列を数に
変換しているところでしょうね。
String型に戻して再確認しました。
単純にInsert文の実行時に
「pStmt.executeUpdate();」と書くところを
「pStmt.executeUpdate(Insertsql);」と書いておりました。
ご回答いただきありがとうございました。
No.1
- 回答日時:
パラメタライズドSQLだと、?の位置に制約があるので、それかも
しれません。動的SQLで組んでみては?
動的とは要するにパラメータを文字列としてプログラムで
SQLに埋め込むと言うことです。
SQLインジェクション対策が必要です。
また、insert into ~select で一発で決めようとしなければ
やりようが有るでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- 英語 海外から返金 1 2022/06/30 08:20
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- TOEFL・TOEIC・英語検定 公式TOEIC問題集7に記載のある文章で質問があります。 どなたかお教えください。 文章は下記となり 1 2022/10/27 06:07
- C言語・C++・C# public class Emplo : IComparable<Emplo>の<Emplo>の意味 2 2023/04/23 23:33
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
エクセルVBA 「On Error GoTo...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
On ErrorでエラーNoが0
-
実行時エラー'-2147467259(8000...
-
ACCESSで値を代入できないとは?
-
データベース操作時エラーについて
-
実行したSQLの結果を返す方法
-
オブジェクト型の変数にフォー...
-
【VBA】ワークブックを開く時に...
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
VB.net 重複チェックがしたいです
-
「実行時エラー '3167' レコー...
-
マクロで"#N/A"のエラー行を削...
-
Excel実行時エラー[80004005]に...
-
UBoundに配列がありませんとエ...
-
エラー処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報
回答ありがとうございます。
一度、insert into ~ selectで一発で決めるのをやめて以下のSQLを記載して実践してみました。
INSERT INTO company.employee_info (name, name_hiragana,birthday,sex,mail_address,company_info_id,business_manager,department,commissioning_status,is_deleted,created_id,modified_id) VALUE( ?,?,?,?,?,?,?,?,?,0,'login','login')
ですが、また同じエラーが発生しましたのでよく見たらcompany_info_idがDBでint型でしたので
BEAN、その他をint型に修正
↓
別のエラー(例外)が発生。
例外の内容は
The server encountered an internal error that prevented it from fulfilling this request.
例外
java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:592)
java.lang.Integer.valueOf(Integer.java:766)
servlet.InsertServlet.doPost(InsertServlet.java:35)
これはSQLが悪いのか教えてほしいです。