データベースにアクセスするDAOを作成し、実行イメージのようになるようなプログラムを作りたいのですが、上手くいきません。色々調べながらやったのですが、エラーも多く、どこから直していけばよいのでしょうか?
実行イメージ 実行が成功したとき
*** 特定の年齢層の従業員の指名のリストを取得 ***
20歳から29歳の従業員:山田花子 佐藤愛
データベース(PKはcode)
+--------+--------------+------+-----------+
| code | name | age | section |
+--------+--------------+------+-----------+
| 201021 | 田中一郎 | 35 | 営業部 |
| 201024 | 山田花子 | 25 | 営業部 |
| 201042 | 鈴木正雄 | 30 | 開発部 |
| 201047 | 高橋和男 | 39 | 開発部 |
| 201063 | 佐藤愛 | 23 | 研修部 |
+--------+--------------+------+-----------+
プログラム
package ex;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionManager {
private final static String URL = "jdbc:mysql://localhost:3306/sampledb";
/* データベースのユーザとパスワード */
private final static String USER = "????";
private final static String PASSWORD= "???";
/**
- データベースへの接続を取得して返す。
- @return コネクション
- @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
package ex;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
- m_employeeテーブルのDAO。
*/
public class EmployeeDAO {
public List<String> selectName(int maxAge,int minAge) throws SQLException {
List<String> nameList = new ArrayList<String>(); //氏名
// URL・ユーザ名・パスワードの設定
String url = "jdbc:mysql://localhost:3306/sampledb";
String user = "????";
String password = "???";
// データベースへの接続の取得、PreparedStatementの取得
try (Connection con = ConnectionManager.getConnection();
PreparedStatement pstmt
= con.prepareStatement("SELECT name FROM m_employee WHERE minAge <= maxAge = ?")) {
// プレースホルダへの値の設定
pstmt.setString(1, age);
// SQLステートメントの実行
ResultSet res = pstmt.executeQuery();
// 結果の操作
while (res.next()) {
nameList.add(res.getString("name"));
}
}
return nameList;
}
}
}
package ex;
import java.sql.SQLException;
import java.util.List;
/**
- EmployeeDAOを使った業務処理を行うクラス。
*/
public class Test {
public static void main(String[] args) {
// データベースアクセスオブジェクトの生成
ConnectionManager cm = new ConnectionManager();
// データベースアクセスオブジェクトの利用
try{
System.out.println("*** 特定の年齢層の従業員の指名のリストを取得 ***");
int age = minAge <= maxAge
List<String> nameList = dao.selectNameList(age);
System.out.println(minAge + "歳から" + maxAge "の従業員:" for (String selectedName : nameList); System.out.println(selectedName + " "); } catch (Exception e) {
System.out.println("処理結果:異常が発生しました。");
e.printStackTrace();
}
}
}
あなたの回答
tips
プレビュー