🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

535閲覧

jspでMySQLに格納できない

mimi_129

総合スコア63

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/10/14 01:14

編集2019/10/27 07:32

前提・実現したいこと

ページ変遷時にformで飛ばした内容をpostfinishのタイミングでSQLに格納したいのですが上手くいきません。
SQLのクラスで実行をするとnullと返されるので受け渡しができていないと思うのですが。。。

発生している問題・エラーメッセージ

java.sql.SQLIntegrityConstraintViolationException: Column 'title' cannot be null

該当のソースコード

POST

Java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6 <meta charset="UTF-8"> 7 <link rel="stylesheet" href="/XXX/css/stylesheet.css" type="text/css"> 8 <title>タイトル</title> 9</head> 10<body> 11 <div id="main"> 12 <div id="header"> 13 <p><a href="../index.jsp">ロゴ</a> 14 <ul> 15 <li>投稿</li> 16 <li>検索</li> 17 </ul> 18 </div> 19 <div id="content"> 20 <form method="POST" action="post_check.jsp"> 21 <input type="text" name="title"><br> 22 <textarea name="honbun" id="" cols="30" rows="10"></textarea><br> 23 <input type="submit" value="送信"> 24 </form> 25 </div> 26 <div id="side"></div> 27 <div id="footer"> 28 </div> 29</div> 30</body> 31</html>

POST_CHECK

Java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="model.PostMaster" %> 4<% 5 6request.setCharacterEncoding("UTF-8"); 7 8PostMaster pm = new PostMaster(); 9 10pm.setTitle(request.getParameter("title")); 11pm.setHonbun(request.getParameter("honbun")); 12 13%> 14<!DOCTYPE html> 15<html lang="en"> 16<head> 17 <meta charset="UTF-8"> 18 <link rel="stylesheet" href="../../css/stylesheet.css" type="text/css"> 19 <title>投稿確認|ペット移動トリミングサイト</title> 20</head> 21<body> 22 <div id="main"> 23 <div id="header"> 24 <p><a href="../index.html">ロゴ</a> 25 <ul> 26 <li>投稿画面へ</li> 27 <li>業者検索</li> 28 </ul> 29 </div> 30 <div id="content"> 31 <ul> 32 <li>【タイトル】</li> 33 <li> 34 <% 35 out.println(pm.getTitle()); 36 %> 37 </li> 38 <li>【本文】</li> 39 <li> 40 <% 41 out.println(pm.getHonbun()); 42 %> 43 </li> 44 </ul> 45 <form method="POST" action="post_finish.jsp"> 46 <input type="hidden" name="title" value="<% pm.getTitle(); %>"> 47 <input type="hidden" name="honbun" value="<% pm.getHonbun(); %>"> 48 <input type="submit" value="送信"> 49 </form> 50 </div> 51 <div id="side"></div> 52 <div id="footer"> 53 </div> 54</div> 55</body> 56</html>

POST_FINISH

Java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="model.PostMaster" %> 4<%@ page import="model.PostMasterMapper" %> 5 6<% 7 8request.setCharacterEncoding("UTF-8"); 9 10PostMaster pm = new PostMaster(); 11 12pm.setTitle(request.getParameter("title")); 13pm.setHonbun(request.getParameter("honbun")); 14 15PostMasterMapper pmm = new PostMasterMapper(); 16 17pmm.addSQL(); 18 19%> 20<!DOCTYPE html> 21<html lang="en"> 22<head> 23 <meta charset="UTF-8"> 24 <link rel="stylesheet" href="../../css/stylesheet.css" type="text/css"> 25 <title>投稿完了|ペット移動トリミングサイト</title> 26</head> 27<body> 28 <div id="main"> 29 <div id="header"> 30 <p><a href="../index.jsp">ロゴ</a> 31 <ul> 32 <li>投稿画面へ</li> 33 <li>業者検索</li> 34 </ul> 35 </div> 36 <div id="content"> 37 <p>投稿が完了しました</p> 38 <ul> 39 <li>【タイトル】</li> 40 <li> 41 <% 42 out.println(pm.getTitle()); 43 %> 44 </li> 45 <li>【本文】</li> 46 <li> 47 <% 48 out.println(pm.getHonbun()); 49 %> 50 </li> 51 </ul> 52 <p><a href="../index.jsp">TOPに戻る</a></p> 53 </div> 54 <div id="side"></div> 55 <div id="footer"> 56 </div> 57</div> 58</body> 59</html>

POST_MASTER

Java

1package model; 2 3public class PostMaster { 4 5 // フィールド 6 private String title; 7 private String honbun; 8 9 // アクセサー 10 public String getTitle() { 11 return title; 12 } 13 14 public void setTitle(String title) { 15 this.title = title; 16 } 17 18 public String getHonbun() { 19 return honbun; 20 } 21 22 public void setHonbun(String honbun) { 23 this.honbun = honbun; 24 } 25 26} 27

POST_MASTERMAPPER

Java

1package model; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.SQLException; 7 8public class PostMasterMapper { 9 10 public int addSQL() throws SQLException { 11 12 try { 13 //変数定義 14 Connection conn = null; 15 PreparedStatement ps = null; 16 17 PostMaster pm = new PostMaster(); 18 19 final String URL = "jdbc:mysql://localhost:8880/petidotriming"; 20 final String USERNAME = "root"; 21 final String PASSWORD = "kimitunagi5emu"; 22 23 String sql = "INSERT INTO postmaster values(?, ?)"; 24 25 //JDBCドライバをロードする 26 Class.forName("oracle.jdbc.driver.OracleDriver"); 27 28 //DBへのコネクションを作成する 29 conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 30 conn.setAutoCommit(false); //オートコミットはオフ 31 32 //実行するSQL文とパラメータを指定する 33 ps = conn.prepareStatement(sql); 34 ps.setString(1, "タイトルです"); 35 ps.setString(2, "本文です"); 36 37 //INSERT文を実行する 38 int i = ps.executeUpdate(); 39 40 //処理件数を表示する 41 System.out.println("結果:" + i); 42 43 //コミット 44 conn.commit(); 45 46 //クローズ処理 47 if (ps != null) ps.close(); 48 if (conn != null) conn.close(); 49 50 return i; 51 52 } catch (Exception ex) { 53 //例外発生時の処理 54 ex.printStackTrace(); //エラー内容をコンソールに出力する 55 return 2; 56 } finally { 57 58 } 59 60 61 62}} 63 64

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

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

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

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

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

guest

回答1

0

ベストアンサー

POST_FINISH?(post_finish.jspのことでしょうか?)にて、

html

1<% 2 PostMasterMapper pmm = new PostMasterMapper(); 3%>

を呼び出していますが、この後pmmのexecute()を実行していないようですが、このJSPのコードは正しいでしょうか。

なお、POST→POST_CHECKの間では、リクエストパラメータが表示先のPOST_CHECKへ送信されているので値が表示できますが、POST_CHECK→POST_FINISHへは値が何も送信されていないので、以下のどちらかの対応も必要です。

  • POST_CHECK の <form> にて、<input type="hidden"> を利用してパラメータの送信を行う
  • POST→POST_CHECKの箇所でHttpSessionに値を格納し、POST_FINISHが正しく完了した後、HttpSessionから削除する

投稿2019/10/14 03:30

A-pZ

総合スコア12011

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

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

mimi_129

2019/10/14 15:23

回答ありがとうございます。。checkからfinishにhiddenで渡せるようにしました。。 mapperのtryでexecute実行しているのですが、これでは呼べていないっていうことですかね。。
A-pZ

2019/10/15 03:29

public static void main(String[] args)は、Javaをコマンドラインから実行する際のメソッドです。 JSPから対象クラスのメソッドを呼び出さなければ実行されません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問