元の質問名「eclipseでアプリケーション実行が表示されない。」これは単にコンソールを開いていなかっただけでした。
題名の通りですが、 一番下のjavaファイルを実行すると以下のエラーが出ます。どうすれば解決できるでしょうか。
以前にもeclipseからDB接続でハマったことがあります。
java.lang.ClassNotFoundException:
そのハマったコードがこれです。Class.forName("com.mysql.jdbc.Driver");をコメントアウトするとエラーが出ませんが、
元に戻すとエラーが出ます。解決策を教えてください。eclipseもまだまだ初心者です。
Java
1package section316; 2 3//データベースへ接続するクラス 4import java.sql.Connection; 5import java.sql.DriverManager; 6 7public class ConnectDB { 8 9 public static void main(String[] args) throws Exception { 10 11 // データベース接続に使うクラスをロードする 12// Class.forName("com.mysql.jdbc.Driver"); 13 14 // データベースに接続する 15 Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8889/college","tennisuser", "password"); 16 17 System.out.println( 18 "データベースの接続状態:" + con.isClosed()); 19 20 // データベースとの接続を閉じる 21 con.close(); 22 23 System.out.println( 24 "データベースの接続状態:" + con.isClosed()); 25 } 26}
以下4つが今実行しているファイルです。
Java
1package model; 2 3public class Login { 4 private String userId; 5 private String pass; 6 7 public Login(String userId, String pass) { 8 this.userId = userId; 9 this.pass = pass; 10 } 11 12 public String getUserId() { 13 return userId; 14 } 15 16 public String getPass() { 17 return pass; 18 } 19}
Java
1package model; 2 3public class Account { 4 private String userId; 5 private String pass; 6 private String mail; 7 private String name; 8 private int age; 9 10 public Account(String userId, String pass, String mail, 11 String name, int age) { 12 this.userId = userId; 13 this.pass = pass; 14 this.mail = mail; 15 this.name = name; 16 this.age = age; 17 } 18 19 public String getUserId() { 20 return userId; 21 } 22 23 public String getPass() { 24 return pass; 25 } 26 27 public String getMail() { 28 return mail; 29 } 30 31 public String getName() { 32 return name; 33 } 34 35 public int getAge() { 36 return age; 37 } 38}
Java
1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9import model.Account; 10import model.Login; 11 12public class AccountDAO { 13 public Account findByLogin(Login login) { 14 Connection conn = null; 15 Account account = null; 16 try { 17 // JDBCドライバを読み込む 18 Class.forName("com.mysql.jdbc.Driver"); 19 20 // データベースに接続 21 conn = DriverManager.getConnection("jdbc:mysql://localhost:8889/JavaLogin", "tennisuser", "password"); 22 23 // SELECT文を準備 24 String sql = "SELECT USER_ID, PASS, MAIL, NAME, AGE FROM ACCOUNT WHERE USER_ID = ? AND PASS = ?"; 25 PreparedStatement pStmt = conn.prepareStatement(sql); 26 pStmt.setString(1, login.getUserId()); 27 pStmt.setString(2, login.getPass()); 28 29 // SELECTを実行し、結果表を取得 30 ResultSet rs = pStmt.executeQuery(); 31 32 // 一致したユーザーが存在した場合 33 // そのユーザーを表すAccountインスタンスを生成 34 if (rs.next()) { 35 // 結果表からデータを取得 36 String userId = rs.getString("USER_ID"); 37 String pass = rs.getString("PASS"); 38 String mail = rs.getString("MAIL"); 39 String name = rs.getString("NAME"); 40 int age = rs.getInt("AGE"); 41 42 account = new Account(userId, pass, mail, name, age); 43 } 44 } catch (SQLException e) { 45 e.printStackTrace(); 46 return null; 47 } catch (ClassNotFoundException e) { 48 e.printStackTrace(); 49 return null; 50 } finally { 51 // データベースを切断 52 if (conn != null) { 53 try { 54 conn.close(); 55 } catch (SQLException e) { 56 e.printStackTrace(); 57 return null; 58 } 59 } 60 } 61 // 見つかったユーザーまたはnullを返す 62 return account; 63 } 64}
Java
1package test; 2 3import dao.AccountDAO; 4import model.Account; 5import model.Login; 6 7public class AccountDAOTest { 8 public static void main(String[] args) { 9 testFindByLogin1(); // ユーザーが見つかる場合のテスト 10 testFindByLogin2(); // ユーザーが見つからない場合のテスト 11 } 12 13 public static void testFindByLogin1() { 14 Login login = new Login("minato", "1234"); 15 AccountDAO dao = new AccountDAO(); 16 Account result = dao.findByLogin(login); 17 if (result != null && 18 result.getUserId().equals("minato") && 19 result.getPass().equals("1234") && 20 result.getMail().equals("minato@sukkiri.com") && 21 result.getName().equals("湊 雄輔") && 22 result.getAge() == 23) { 23 System.out.println("findByLogin1:成功しました"); 24 } else { 25 System.out.println("findByLogin1:失敗しました"); 26 } 27 } 28 29 public static void testFindByLogin2() { 30 Login login = new Login("minato", "12345"); 31 AccountDAO dao = new AccountDAO(); 32 Account result = dao.findByLogin(login); 33 if (result == null) { 34 System.out.println("findByLogin2:成功しました"); 35 } else { 36 System.out.println("findByLogin2:失敗しました"); 37 } 38 } 39}

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。