Eclipse4.7.0上で
DB Viewer を使ってh2データベースを設定しましたが、
DB ViewerのパースペクティブではSelect文が実行できるのに
Javaファイル(動的Webプロジェクト)からDB接続に必要となる文を書いた上で
全く同じSELECT文を実行しようとすると
**”テーブル "EMPLOYEE" が見つかりません。"**というエラーがコンソールに出ます。
Javaファイルの実行を通してコンソール上にエラーなしで指定のテーブルからカラムを表示しようとしています。
わかる方がいらっしゃればご指摘よろしくお願いします。
###前提条件
・Macbook13.1です
・Eclipse4.7.0はPleiades all in oneをダウンロードして使っています。
・h2はh2-1.4.196.jarというファイルを/WEB-INF/lib以下に設置して使っています。
・データベース名sample
・テーブル構造は
テーブル名EMPLOYEE、
ID CHAR(6) PRIMARYKEY,
NAME VARCHAR(100) NOT NULL,
AGE INT NOT NULL,
です。
Java
1//SelectSample.java 2import java.sql.Connection; 3import java.sql.DriverManager; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7 8public class SelectSample { 9 public static void main(String[] args) { 10 Connection conn = null; 11 try { 12 Class.forName("org.h2.Driver"); 13 conn = DriverManager.getConnection( 14 "jdbc:h2:file:C:/data/sample","",""); 15 16 String sql = "SELECT ID,NAME,AGE FROM EMPLOYEE"; 17 PreparedStatement pSmt = conn.prepareStatement(sql); 18 ResultSet rs = pSmt.executeQuery(); 19 20 while(rs.next()) { 21 String id = rs.getString("ID"); 22 String name = rs.getString("NAME"); 23 int age = rs.getInt("AGE"); 24 25 System.out.println("ID:" + id); 26 System.out.println("名前:" + name); 27 System.out.println("年齢:" + age + "¥n"); 28 } 29 }catch(SQLException e) { 30 e.printStackTrace(); 31 }catch(ClassNotFoundException e){ 32 e.printStackTrace(); 33 }finally { 34 if(conn != null) { 35 try { 36 conn.close(); 37 }catch(SQLException e) { 38 e.printStackTrace(); 39 } 40 } 41 } 42 } 43} 44 45
###自分で調べたこと
・SELECT文を書かずにDB接続だけ実行すると何もエラーが出ないので
接続はできている可能性が高いです。
・H2にはデフォルトでINFORMATION_SCHEMAとPUBLICというスキーマがあり
その中にEMPLOYEEというテーブルをCREATEしているので
そういったことも何か関係があるのかもしれないです
.Java EE のパースペクティブとDB Viewerのパースペクティブでそれぞれ別のDBを扱ってしまっていることがわかりました。が、原因はわかっていません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。