質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

1回答

959閲覧

DBに値を追加することができない

junnokets

総合スコア3

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2021/06/11 10:42

編集2021/06/12 03:06

DBに値を追加できないです。
下記のようにコードを打ち、フォームで値を入力すると
SQLException:(conn=35) 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 '?,?,?,?,?,?,?,?,?,?,?,?,?,?)' at line 1 nullnullnullを登録しました。
というエラーコードが出てしまいます。

package sample; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class formrequest extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //パラメーター取得 request.setCharacterEncoding("UTF-8"); String sei= request.getParameter("sei"); String mei= request.getParameter("mei"); String sei_f=request.getParameter("sei_f"); String mei_f=request.getParameter("mei_f"); String gender=request.getParameter("gender"); String year= request.getParameter("year"); String month= request.getParameter("month"); String day= request.getParameter("day"); String post= request.getParameter("post"); String pre=request.getParameter("pre"); String address=request.getParameter("address"); String tell=request.getParameter("tell"); String mail=request.getParameter("mail"); String bikou=request.getParameter("bikou"); //コンテンツタイプ指定 response.setContentType("text/HTML; charset=UTF-8"); PrintWriter out=response.getWriter(); //HTML out.println("<DOCTYPE HTML>"); out.println("<html>"); out.println("<head>"); out.println("<meta charset=\"UTF-8\">"); out.println("<title>result</title>"); out.println("</head>"); out.println("<body>"); //変数定義 Connection conn = null; Statement stmt = null; try { //JDBCドライバをロード Class.forName("org.mariadb.jdbc.Driver").newInstance(); //DBへのコネクション conn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/test", "root", ""); stmt = conn.createStatement(); //sql文の定義 String sql = "insert into test(sei,mei,sei_f,mei_f,gender,year,month,day,post,pre,address,tell,mail,bikou) " + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; //実行するSQL文と7パラメータ PreparedStatement stmt1=conn.prepareStatement(sql); stmt1.setString(1,sei); stmt1.setString(2,mei); stmt1.setString(3,sei_f); stmt1.setString(4,mei_f); stmt1.setString(5,gender); stmt1.setString(6,year); stmt1.setString(7,month); stmt1.setString(8,day); stmt1.setString(9,post); stmt1.setString(10,pre); stmt1.setString(11,address); stmt1.setString(12,tell); stmt1.setString(13,mail); stmt1.setString(14,bikou); //INSERTの実行 int num= stmt.executeUpdate(sql); stmt1.close(); //例外発生処理 }catch (ClassNotFoundException e){ out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ out.println("Exception:" + e.getMessage()); }finally{ try { if (conn != null){ conn.close(); } }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } } out.println(sei+mei+sei_f+mei_f+gender+year+month+day+post+post+address+tell+mail+bikou+"を登録しました。" ); out.println("<body>"); out.println("<html>"); } }

どのようにすれば反映されるようになるでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

values(?,?,?,?,?,?,?,?,?,?,?,?)?は12個しかないのにも関わらず、14個の値を設定しようとしているのが原因かと思います。

投稿2021/06/11 11:21

neko_the_shadow

総合スコア2230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junnokets

2021/06/12 03:05

返信ありがとうございます。 ?を14個にしてみましたが、 SQLException:(conn=35) 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 '?,?,?,?,?,?,?,?,?,?,?,?,?,?)' at line 1 nullnullnullを登録しました。 というエラーが発生します。
dodox86

2021/06/12 03:51

@質問者さん 当初の質問内容を変えてしまうと回答と食い違いが出てしまい、後で読んだ方々が混乱します。そういう場合は元の内容が分かるよう配慮し、質問文中に追記するかたちにして修正してください。
neko_the_shadow

2021/06/12 11:06

詳細なエラーを握りつぶしており、エラーの理由を特定するさまたげになっています。 out.println("SQLException:" + e.getMessage()); としているところを以下のように修正し、詳細なエラー内容を確認してください。 e.printStackTrace(out);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問