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

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

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

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

SQL

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

データベース

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

Q&A

解決済

1回答

905閲覧

データベースおよびSQL文を使用したプログラムの実行

NaoMatsubayashi

総合スコア10

Java

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

SQL

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

データベース

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

0グッド

0クリップ

投稿2022/04/06 02:06

編集2022/04/07 02:11

始めに

java言語の学習を始めて、日が浅い初心者です。分野といたしましては、データベースおよびSQL文を学んでおります。
また、私はとある学習書を参考に、勉強いたしております。文末に記載いたしました。必要とあらば、ご参照ください。
お手柔らかに、よろしくお願いいたします。

問題点

直面している問題といたしましては、エラーをキャッチせずにプログラムを終了させることができない点でございます。
とりあえず、コードを載せさせていただきました。このコードは、私がプログラミングの習得のためだけに書いたコードでございます。したがって、JVMに実行させることが目的のプログラムとなります。
私の推測にはなりますが、最初に呼び出すConnectionクラスのprepareStatementメソッドにおいて、SQL文の文法が間違っているところにあると存じます。
既に、さまざまな方法を試しておりますが、どれもエラーが発生しております。最終的にデタラメなコードとなってしまい、回答していただく方にわかりずらいコードとなる可能性を危惧いたしました結果、試す前のコードを載せております。
必要の有無はわかりませんが、ターミナルを経由した情報も載せておきました。場合に応じて、ご参照ください。

java

1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.PreparedStatement; 4import java.sql.SQLException; 5 6public class Second{ 7 8 static{ 9 try{Class.forName("org.h2.Driver"); 10 }catch(ClassNotFoundException e){ 11 error(e); 12 System.exit(0); 13 } 14 } 15 16 public static void main(String[] args){ 17 Connection con = null; 18 try{ 19 con = DriverManager.getConnection("jdbc:h2:~/second"); 20 PreparedStatement prestaIn = con.prepareStatement("INSERT INTO CHARACTERS WHERE NAME = ?"); 21 prestaIn.setString(1,"hero"); 22 int iIn = prestaIn.executeUpdate(); 23 PreparedStatement prestaUp = con.prepareStatement("UPDATE FROM CHARACTERS WHERE NAME = ?"); 24 prestaUp.setString(1,"villan"); 25 int iUp = prestaUp.executeUpdate(); 26 PreparedStatement prestaDe = con.prepareStatement("DELETE FROM CHARACTERS WHERE NAME = ?"); 27 prestaDe.setString(1,"villan"); 28 int iDe = prestaDe.executeUpdate(); 29 if(iIn == 1 && iUp == 1 && iDe == 1){System.out.print("OK");} 30 }catch(SQLException e){error(e); 31 }finally{try{con.close();}catch(Exception e){;}} 32 } 33 34 private static void error(Exception e){ 35 System.out.println("ーーーエラーメッセージーーー"); 36 System.out.println(e.getMessage()); 37 System.out.println("ーーースタックトレースーーー"); 38 e.printStackTrace(); 39 } 40}

terminal

1個人情報 database % javac -cp .:h2/bin/h2-2.1.210.jar:h2-2.1.210.jar second/Second.java 2個人情報 database % java -cp second:h2/bin/h2-2.1.210.jar:h2-2.1.210.jar Second 3ーーーエラーメッセージーーー 4Table "CHARACTERS" not found (this database is empty); SQL statement: 5INSERT INTO CHARACTERS WHERE NAME = ? [42104-210] 6ーーースタックトレースーーー 7org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "CHARACTERS" not found (this database is empty); SQL statement: 8INSERT INTO CHARACTERS WHERE NAME = ? [42104-210] 9 at org.h2.message.DbException.getJdbcSQLException(DbException.java:521) 10 at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) 11 at org.h2.message.DbException.get(DbException.java:227) 12 at org.h2.message.DbException.get(DbException.java:203) 13 at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8397) 14 at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8381) 15 at org.h2.command.Parser.readTableOrView(Parser.java:8370) 16 at org.h2.command.Parser.readTableOrView(Parser.java:8340) 17 at org.h2.command.Parser.parseInsert(Parser.java:1624) 18 at org.h2.command.Parser.parsePrepared(Parser.java:797) 19 at org.h2.command.Parser.parse(Parser.java:674) 20 at org.h2.command.Parser.parse(Parser.java:644) 21 at org.h2.command.Parser.prepareCommand(Parser.java:551) 22 at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:615) 23 at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:553) 24 at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) 25 at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) 26 at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288) 27 at Second.main(Second.java:20)

最後に

改めて申し上げます。
私が直面している問題といたしましては、エラーをキャッチせずにプログラムを終了させることができない点でございます。
java言語に明るい方へ質問いたします。ご回答、お待ちしております。

学習書

すっきりわかるJava入門 実践編 第3版

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーの通りCHARACTERSというテーブルが存在しない(且つ接続先データベースがそもそも何もテーブルがない)だけと思います。

Table "CHARACTERS" not found (this database is empty);

接続先DBにその名前のテーブルがあるのか、似たような名前で間違えてないか確認してください。
コピペが確実です。

「そもそもテーブルなんて作った覚えない」というのでしたら作るところから。
INSERTはテーブルに対してレコード(データ)を挿入するためのSQLであり、あくまで指定のテーブルが存在することが絶対条件です。

あとアプリケーションからSQLを実行する前に、指定のDBに対してそのSQLを直に実行して想定の結果を得られるか確かめるのが先です。
Javaなどプログラミング言語がやっていることは接続先に対して文字列を届けて実行結果を得るだけで、実行されるのはあくまでDB上です。

投稿2022/04/06 02:14

編集2022/04/06 02:17
m.ts10806

総合スコア80850

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

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

NaoMatsubayashi

2022/04/07 02:20

ご回答、ありがとうございます。 テーブルを作成いたしまして、プログラムを実行いたしましたところ、「INSERT」と「DELETE」は問題なく動作されました。 ただ、「UPDATE」への解釈が曖昧で、プログラムを動作できる段階にまで進めておりません。 下記に、私が作成したSQL文のコードを記載いたします。よろしければ、各「@」部分が何を表すのか、ご解説いただけますか。 UPDATE characters @1 = @2 WHERE @3 = @4
m.ts10806

2022/04/07 02:23 編集

構文ならドキュメントを確認してください。 それでも解決しなければ本件とは要件変わってきてるので本件は解決済みとし、 別質問としてください。
NaoMatsubayashi

2022/04/08 01:27

承りました。 本件に関しましては、m.ts10806様をベストアンサーとさせていただきます。 また、「DELETE」を使用したSQL文に関しましても、新しく質問させていただきます。下記にURLを載せておきました。よろしければ、そちらの質問にも回答してくださいませんか。 https://teratail.com/questions/q0q0h7fnju1myw
m.ts10806

2022/04/08 01:30

DELETEでも同じです。 まずはドキュメント読めるようになりましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問