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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

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

データベース

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

1833閲覧

エクリプスのコンソールアプリケーションのUPDATE構文エラーについて

zzsadf

総合スコア1

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

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

データベース

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/06/26 00:56

前提・実現したいこと

javaとOracleDatabaseとエクリプスを使用して簡単な社員管理システムを作っています。

UPDATE機能を実装中に以下のエラーメッセージが発生しました。

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

=== 社員管理システム ===

  1. 全件表示
  2. 登録
  3. 更新
  4. 削除
  5. 終了

メニュー番号を入力してください:3
社員ID1
社員名を入力してください。
hogehoge
性別を入力してください(男性:1、女性:2)。
1
生年月日を入力してください(西暦年/月/日)。
1998/03/11
部署ID(1:営業部、2:経理部、3:総務部):1
java.sql.SQLSyntaxErrorException: ORA-01747: user.table.column、table.columnまたは列指定が無効です

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1017) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:566) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:58) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:943) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1075) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3820) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3897) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1361) at jp.co.sss.crud.db.DBController.update(DBController.java:131) at jp.co.sss.crud.main.MainSystem.main(MainSystem.java:72)

該当のソースコード

↓DBController

public static void update (String empId, String empName, String gender, String birthday, String deptId )
throws ClassNotFoundException, SQLException {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
// DBに接続
connection = DBManager.getConnection();
// ステートメントを作成
preparedStatement = connection.prepareStatement(ConstantSQL.SQL_UPDATE);
// 入力値をバインド
preparedStatement.setString(5, deptId);
preparedStatement.setString(1, empId);
preparedStatement.setString(2, empName);
preparedStatement.setString(3, gender);
preparedStatement.setString(4, birthday);
// SQL文を実行
int cnt = preparedStatement.executeUpdate();
System.out.println(cnt + "件のデータを更新しました。");
} catch (Exception e) {
e.printStackTrace();
} finally {
// クローズ処理
DBManager.close(preparedStatement);
DBManager.close(connection);
}
}

↓MainSystem
case 3:
// 更新する値を入力
System.out.print("社員ID");
String empId = br.readLine();
System.out.println("社員名を入力してください。");
empName = br.readLine();
System.out.println("性別を入力してください(男性:1、女性:2)。");
gender = br.readLine();
System.out.println("生年月日を入力してください(西暦年/月/日)。");
birthday = br.readLine();
System.out.print("部署ID(1:営業部、2:経理部、3:総務部):");
deptId = br.readLine();

// DBに接続
DBController.update(empId, empName, gender, birthday, deptId);
break;

↓ConstantSQL
public static String SQL_UPDATE = "UPDATE employee SET emp_id = ?, enm_name = ?, gender = ?, birthday = ?, WHERE dept_id = ?";

UPDATEの該当箇所のコードを抜粋してます。

試したこと

これと同じ形のDELETE機能は動いたので、何度も構文を呼んだのですが原因がわかりませんでした。

補足情報(FW/ツールのバージョンなど)

Java
エクリプス
JDBC

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

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

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

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

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

Orlofsky

2020/06/26 01:07

質問に、 >UPDATE employee SET emp_id = ?, enm_name = ?, gender = ?, birthday = ?, WHERE dept_id = ?"; 各 ? に設定した値も追記してください。
guest

回答1

0

エラーは「指定されている項目名が見当たらない」というものです。

employeeテーブルの定義情報の提供がありませんので推測ですけど、
enm_name ←×
emp_name ←○

ではないでしょうか。

java

1public static String SQL_UPDATE = "UPDATE employee SET emp_id = ?, emp_name = ?, gender = ?, birthday = ?, WHERE dept_id = ?";

投稿2020/06/26 01:49

sazi

総合スコア25327

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問