반응형

JDBC란? (Java Database Connectivity)

- 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API

 

즉, DB와 자바 프로그램을 연결시켜주는 연결 다리의 역할을 한다는 것이다.

 

 

JDBC 클래스 생성 관계

 

 

 

 

SELECT DAO 예제

public Role getRole(String name) {

	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);
		String sql = "SELECT name, tel FROM card WHERE name = ?";
		ps = conn.prepareStatement(sql);
		
		ps.setString(1, name);
		
		rs = ps.executeQuery();            // select는 executeQuery() 이용
										   // ResultSet type의 변수에 결과 입력

		if (rs.next()) {
			String name1 = rs.getString("name");
			String tel1 = rs.getString("tel");
			role = new Role(name1, tel1);
		}
	} catch (Exception e) {
		e.printStackTrace();
	} 
	finally {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (ps != null) {
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	return role;
}

 

 

 

 

INSERT DAO 예제

public int addRole(Role role) {

	int insertCount = 0;
	Connection conn = null;
	PreparedStatement ps = null;

	try {
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
		String sql = "INSERT INTO card (name, tel) VALUES ( ?, ? )";
		ps = conn.prepareStatement(sql);
	
		ps.setString(1, role.getName());
		ps.setString(2, role.getTel());

		insertCount = ps.executeUpdate();	// insert, delete, update는 executeUpdate() 이용
											// int type 변수에 결과 입력
	} catch (Exception ex) {
		ex.printStackTrace();
	} finally {
		if (ps != null) {
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	return insertCount;
}

 

 

 

 

 

DELETE DAO 예제

public int deleteRole(Integer roleId) {

	int insertCount = 0;
	Connection conn = null;
	PreparedStatement ps = null;

	try {
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
		String sql = "DELETE from role where role_id = ?";
		ps = conn.prepareStatement(sql);
	
		ps.setInt(1, roleId);

		insertCount = ps.executeUpdate();	// insert, delete, update는 executeUpdate() 이용
											// int type 변수에 결과 입력
	} catch (Exception ex) {
		ex.printStackTrace();
	} finally {
		if (ps != null) {
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	return insertCount;
}

 

 

 

 

UPDATE DAO 예제

public int updateRole(Role role) {

	int insertCount = 0;
	Connection conn = null;
	PreparedStatement ps = null;

	try {
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
		String sql = "UPDATE role set description = ? where role_id = ?";
		ps = conn.prepareStatement(sql);
	
		ps.setString(1, role.getDescription());
		ps.setInt(2, role.getRoleId());

		insertCount = ps.executeUpdate();	// insert, delete, update는 executeUpdate() 이용
											// int type 변수에 결과 입력
	} catch (Exception ex) {
		ex.printStackTrace();
	} finally {
		if (ps != null) {
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	return insertCount;
}

 

 

DriverManager를 이용해 connection을 가져오고,

conn 객체를 이용해 statement를 가져오고,

statement를 통해 ResultSet을 가져옴을 확인할 수 있다.

 

 

 

 

 

 

JSP란?  (java server page)

 

 

JSTL이란? (JSP Standard Tag Library)

- JSTL은 JSP 페이지에서 조건문 처리, 반복문 처리 등을 html tag형태로 작성할 수 있게 도와준다.

 

JSP 페이지에서 자바 언어와 프론트엔드 언어가 섞여있으면 다루기 힘드니까, 자바 언어를 html tag 형태로 작성할 수 있도록 도와주는 것이다.

 

 

서블릿이란?

반응형

+ Recent posts