JDBC実習
ファイル構造
📁jdbcexam
|_ 📁kr.or.connect.jdbcexam
Role.java
ロールオブジェクトに関する情報を含める
package kr.or.connect.jdbcexam.dto;
public class Role {
private Integer roleId;
private String description;
public Role(Integer roleId, String description) {
super();
this.roleId=roleId;
this.description=description;
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Role [roleId=" + roleId + ", description=" + description + "]";
}
}
RoleDao.java
データベースへの接続を担当
次の関数を定義して、DBを読み取り、書き込み、または変更できます.
1.connオブジェクトの作成
2.宣言に必要な値を動的に入力するためのprepare Statement変数の作成
3.prepare Statement変数に保存されているクエリーを実行し、next()関数として行単位でインポート
4.rsがアイドル時処理異常->close
5.psがアイドル時処理異常->close
6.connがnullの場合の例外処理->close
package kr.or.connect.jdbcexam.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import kr.or.connect.jdbcexam.dto.Role;
public class RoleDao {
private static String dburl = "jdbc:mysql://localhost:3306/connectdb";
private static String dbUser = "connectuser";
private static String dbpasswd = "connect123!@#";
public Role getRole(Integer roleId) {
Role role = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
// preparedStatement가 가지고 있는 물음표에 대한 값을 지정 가능
String sql = "SELECT description, role_id FROM role WHERE role_id = ?";
ps = conn.prepareStatement(sql); // sql문을 실행시키도록 함
ps.setInt(1, roleId);//1번째 물음표에 roleId 변수를 적용
rs = ps.executeQuery();
if(rs.next()) {
String description = rs.getString(1); // 첫번째 column의 값 가져옴
int id = rs.getInt(2); //column이 가진 값 가져옴
role = new Role(id, description);
}
}catch (Exception e) {
e.printStackTrace();
}finally {
if(rs != null) { // rs가 null일 때는 수행되지 않도록 함
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps != null) { // ps가 null일 때는 수행되지 않도록 함
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn != null) { // conn가 null일 때는 수행되지 않도록 함
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return role;
}
}
JDBCExam1.java
RoleDaoのget関数を使用してDBデータのマスタークラスをインポート
package kr.or.connect.jdbcexam;
import kr.or.connect.jdbcexam.dao.RoleDao;
import kr.or.connect.jdbcexam.dto.Role;
public class JDBCExam1 {
public static void main(String[] args) {
RoleDao dao = new RoleDao();
Role role = dao.getRole(100); #role_id 가 100인 레코드를 가져옴
System.out.println(role);
}
}
結果
Reference
この問題について(JDBC実習), 我々は、より多くの情報をここで見つけました https://velog.io/@oliviarla/JDBC-실습テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol