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

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

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

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

Eclipse

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

Q&A

1回答

7161閲覧

h2データベースの値の出力方法

shintanakama

総合スコア6

Java

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

Eclipse

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

0グッド

0クリップ

投稿2017/09/09 08:20

編集2022/01/12 10:55

プログラミング初心者です。初めて質問します。失礼な点がありましたら申し訳ございません。Macを使って、h2データベースにある値を出力するjavaプログラミングをしているのですが、うまくいきません。h2dデータベースのテーブル作成を出来ておりテーブルの表も表示されるのですが、実行するとテーブルが見つかりませんとなります。初歩的な問題だと思いますが自分で解決できず困っおります。ご教授いただけると助かります
###発生している問題・エラーメッセージ
org.h2.jdbc.JdbcSQLException: テーブル "EMPLOYEE" が見つかりません
Table "EMPLOYEE" not found; SQL statement:
SELECT ID,NAME,AGE FROM EMPLOYEE [42102-196]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.command.Parser.readTableOrView(Parser.java:5552)
at org.h2.command.Parser.readTableFilter(Parser.java:1266)
at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1946)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2095)
at org.h2.command.Parser.parseSelectSub(Parser.java:1940)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1755)
at org.h2.command.Parser.parseSelect(Parser.java:1743)
at org.h2.command.Parser.parsePrepared(Parser.java:449)
at org.h2.command.Parser.parse(Parser.java:321)
at org.h2.command.Parser.parse(Parser.java:293)
at org.h2.command.Parser.prepareCommand(Parser.java:258)
at org.h2.engine.Session.prepareLocal(Session.java:578)
at org.h2.engine.Session.prepareCommand(Session.java:519)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1204)
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:73)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288)
at example.SelectEmployeeSample.main(SelectEmployeeSample.java:30)

###該当のソースコード

ここにご自身が実行したソースコードを書いてください package example; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @author nakamashinta * */ public class SelectEmployeeSample { public static void main(String[] args) { Connection conn = null; try { //JDBCドライバを読み込み Class.forName("org.h2.Driver");//JDBCドライバの名前 //データベース接続 conn = DriverManager.getConnection("jdbc:h2:file:application:/data/example","sa","");//接続先DB、ユーザ名、パスワード //SELECT文を準備 String sql = "SELECT ID,NAME,AGE FROM EMPLOYEE"; PreparedStatement pStmt = conn.prepareStatement(sql);//準備したSQLをDBに届けるprepareStatementインスタンスを取得 //SELECTを実行し、結果表(ResultSet)に取得 ResultSet rs = pStmt.executeQuery();//ResultSetインスタンスにSELECT文の結果が格納される //結果表に格納されたレコードの内容を表示 while(rs.next()) { String id = rs.getString("ID"); String name = rs.getString("NAME"); int age = rs.getInt("AGE"); //取得したデータを出力 System.out.println("ID:" + id); System.out.println("名前:" + name); System.out.println("年齢: " + age + "¥n"); } } catch(SQLException e) { e.printStackTrace(); //接続やSQL処理の失敗時の処理、必要に応じて } catch(ClassNotFoundException e) { e.printStackTrace(); //JDBCドライバが見つからない時の処理、必要に応じて } finally { //データベース切断 if(conn != null) { try { conn.close(); } catch(SQLException e) { e.printStackTrace(); //切断失敗時の処理、必要に応じて } } } } } ###試したこと 課題に対してアプローチしたことを記載してください プログラミング入門書に記載のコードを入力しておりますが、入門書をwindows向け、私はMacで、データベース接続の部分を変更したりしているのですが上手く行きません。h2インストールファイルはアプリケーションフォルダに保存しております。eclipseビルドパスや、libフォルダにh2-1.4.196.jarを貼り付けたりもしておりますが上手く行きません。

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

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

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

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

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

guest

回答1

0

H2DBのテーブルを作成したときのファイルパスがあっていないかと思います。

なお特に接続方法にてファイルが存在しているかチェックしていない場合は、特に何も作成していないデータベースを作成しつつ接続するため、「接続はうまくいっている(ように見えるが実は空のデータベースを作成している)が、テーブルは未定義のため、テーブルが見つからない」状態になります。

これを回避するオプションもあります。

http://www.h2database.com/html/features.html#database_only_if_exists

例:String url = "jdbc:h2:/data/sample;IFEXISTS=TRUE";

;IFEXISTS=TRUEをつけることで、データベースのファイルが存在したときのみ接続でき、存在しなかった場合は例外がスローされます。

投稿2017/09/09 16:13

A-pZ

総合スコア12011

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

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

shintanakama

2017/09/10 04:36

返信ありがとうございます。またURLの記載もありがとうございます。H2のファイルパスをもう一度指定し直し、データベースも作成し直しましたが上手く行きませんでした。(h2ファイルパス:jdbc:h2:application:/data/example、javaはjdbc:h2:application:/data/example","sa",""、もしくは、jdbc:h2:file:C:/data/example、javaはjdbc:h2:file:C:/data/example","sa","" で作成、ユーザ名はsa、パスワードなし)テーブルEMPLOYEEが見つかりませんとエラーになります。自分でもファイルパスにミスはないか色々やって見ますが、もし上記で間違いがあれば教えていただけると助かります。
A-pZ

2017/09/11 06:09

H2DBでテーブルを作成した手順についてですが、サービスで起動したものをコンソールで開いた時のH2DB接続のURLと、JavaのコードからH2DBへ接続したときのURLは、両方とも全く同じでしょうか?この値が異なる場合は、実際には別のデータベースへ接続しています。特に~(チルダ)から始まるURLだった場合は、管理コンソールでの接続URLを具体的なファイルパスに変更しましょう。
shintanakama

2017/09/11 13:16

全く同じだと思います。最終的に下記のように記載しました。エラー内容は、『org.h2.jdbc.JdbcSQLException: テーブル "EMPLOYEE" が見つかりません』です。 https://gyazo.com/6a72ceed05477e87fb0d2c84d2ea4910 https://gyazo.com/edfb68a2316916400332ecd2385cc32d //JDBCドライバを読み込み Class.forName("org.h2.Driver");//JDBCドライバの名前 //データベース接続 conn = DriverManager.getConnection( "jdbc:h2:Application:/data/example","sa","");//接続先DB、ユーザ名、パスワード
shintanakama

2017/09/11 13:18

お忙しい中返信していただき本当にありがとうございます。何かお気づきな点がございましたら教えていただけると助かります。
A-pZ

2017/09/11 15:24

ちょっと気になるのは、撮っていただいた画像のURLを見ると jdbc:h2:Application と先頭のAが全角になっていることでしょうか。
shintanakama

2017/09/12 14:50

返信ありがとうございます。applicationの方でも試しましたが、上手くいきませんでした。他の方法を考えてみます。
A-pZ

2017/09/13 16:05

一度 http://www.h2database.com/html/features.html#connection_modes の公式サイトにならった接続子を使うのがよいでしょうか。applicationの記述は不要で、jdbc:h2:file:を使ってファイルパスを指定するとうまくいくでしょうか(少なくともこちらでは検証済みです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問