始めに
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版
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/07 02:20
2022/04/07 02:23 編集
2022/04/08 01:27
2022/04/08 01:30