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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

SQL

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

Q&A

1回答

2488閲覧

SQLExceptionが発生します。

退会済みユーザー

退会済みユーザー

総合スコア0

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

SQL

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

0グッド

0クリップ

投稿2016/08/17 07:43

サーブレットでシステムを一つ作成中です。
登録画面で入力した値を受け取ってDBに登録するだけです。

コントローラです。↓
import java.io.;
import javax.servlet.
;
import javax.servlet.http.;
import java.util.
;

public class Sample extends HttpServlet{
public void doPost (HttpServletRequest req,
HttpServletResponse res)
throws IOException,ServletException{
res.setContentType("text/html; charset=UTF-8");
req.setCharacterEncoding("UTF-8");
int result = 3;
int result2;
int group_cd;
String date_start = req.getParameter("date_start");
String date_end = req.getParameter("date_end");
group_cd = Integer.parseInt(req.getParameter("group_cd"));
Sample_m sm = new Sample_m();

sm.setDate_start(date_start);
sm.setDate_end(date_end);
sm.setGroup_cd(group_cd);

result = sm.DB();
result2 = sm.register_sample();

if(result == 0 && result2 == 6){

getServletContext().getRequestDispatcher("/jspdir/sample.jsp").forward(req,r
es);
}else{

getServletContext().getRequestDispatcher("/jspdir/sample_r.jsp").forward(req
,res);
}
}
}

beanです。↓

import java.io.;
import java.util.
;
import java.sql.*;
import java.util.Properties;

public class Sample_m{

private String date_start;
private String date_end;
private int group_cd;
private int result; //DB登録結果格納
Connection con; //DB接続
Statement stmt;
String sql;

public Report_register(){};
public void setDate_start(String date_start) {
this.date_start=date_start;
}
public void setDate_end(String date_end) {
this.date_end=date_end;
}
public void setGroup_cd(int group_cd) {
this.group_cd=group_cd;
}

public String getDate_start() {
return this.date_start;
}
public String getDate_end() {
return this.date_end;
}
public int getGroup_cd() {
return this.group_cd;
}
public int getResult() {
return this.result;
}

public int DB(){

String url = "jdbc:postgresql://localhost:5433/Report_DB";
con = null;
try{

/* JDBCドライバをロードする /
Class.forName("org.postgresql.Driver");
/
データベースに接続する /
con =
DriverManager.getConnection(url,"sample","sample");
con.setAutoCommit(false);
/
Statementオブジェクトを生成する */
stmt = con.createStatement();

} catch (ClassNotFoundException e) {
System.out.println("JDBCドライバが見つかりませんでし
た。");
return 6;
}catch(SQLException e){
return 7;
}catch(Exception e){
return -1;
}
return result;
}
public int register_sample(){
try{
sql = "insert into
sample_mst(date_start,date_end,group_cd) values
('"+getDate_start()+"','"+getDate_end()+"'"+getGroup_cd()+")";

int num = stmt.executeUpdate(sql);
stmt.close();
con.close();
}catch(SQLException e){
return 6;
}catch(Exception e){
return -1;
}
return result;
}
}

今回SQLExceptionが発生してるのは
register_sampleです。

環境の問題でエラーログが吐かれないので、どの変数に何の値が入ってるのかは不明です。

DBへは接続可能です。
テーブルもあります。

例外が発生する原因は何でしょうか…

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

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

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

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

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

guest

回答1

0

register_sampleメソッドの4行目
「('"+getDate_start()+"','"+getDate_end()+"'"+getGroup_cd()+")";」
のgetDate_endとgetGroup_cdの間にカンマが抜けているからではないでしょうか?

以下のようにすれば大丈夫だと思います。
「('"+getDate_start()+"','"+getDate_end()+"',"+getGroup_cd()+")";」

また、group_cdがCHAR型やVERCHAR型であれば、getGroup_cd()を
シングルクォーテーションで囲う必要があります
「('"+getDate_start()+"','"+getDate_end()+"','"+getGroup_cd()+"')";」

投稿2016/08/17 08:14

plue

総合スコア71

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

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

退会済みユーザー

退会済みユーザー

2016/08/17 08:24

あ、ほんとだ…。 気づきませんでした。 指摘箇所を修正したのですが、変わらずSQLExceptionが発生します
退会済みユーザー

退会済みユーザー

2016/08/17 08:43

sample_mstの主キーのmember_cdにnotnull制約が付与されており、それもinsertしないといけなかったです。ただ、追加して実行してみてもダメでした
plue

2016/08/17 09:57

閲覧者は sample_mst の内容がわからないため、CREATE文を載せた方が良いですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問