- 개발환경 : (eclipse IDE)
- 언어 : jsp
- 의도 : 한 개의 동작에 여러 개의 쿼리문을 실행하기
- 해결
단순 JSP공부를 하다보면 DAO에서 이뤄지는 DB 접속 작업이 필수로 있을 것이다.
쿼리문 사용에 능숙하다면 서브 쿼리를 이용하여 해결하기도 하겠지만, 서브 쿼리를 쓰지 않고 사용하는 방법이 있다.
public testDAO() {
try {
String dbURL = "jdbc:mariadb://localhost:3306/test";
String dbID = "root";
String dbPassword = "root";
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
위와 같이 DB에 접속하는 코드에서 멀티 쿼리를 적용하게 되는데
?allowMultiQueries=true
문장을 URL 뒤에 붙이면 된다.
보통 쿼리 작업 수행시
쿼리문 전송방법은
String sql = "insert into tt values(?,?,?,?,?,?)";
방식으로 하나의 쿼리만 전송하고 연속적으로 전송하려면 재 호출을 해야만 했다.
하지만 ?allowMultiQueries=true를 사용하게 되면 같은 줄에 여러 쿼리를 보낼 수 있다
- 접속 설정
public testDAO() {
try {
String dbURL = "jdbc:mariadb://localhost:3306/test?allowMultiQueries=true";
String dbID = "root";
String dbPassword = "root";
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
- 다중 쿼리 실행
String sql = "insert into tt values(?,?,?,?,?,?); update tt set user where cnt = 1";
이렇게 사용하면 한번의 호출로 여러 개의 쿼리를 실행할 수 있게 된다.
만약 dbURL 설정시 이미 적용된 ?serverTimezone=UTC 같은 문구가 있을 경우 연장하는 방법은
public testDAO() {
try {
String dbURL = "jdbc:mariadb://localhost:3306/test?allowMultiQueries=true&serverTimezone=UTC";
String dbID = "root";
String dbPassword = "root";
Class.forName("org.mariadb.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbID, dbPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
이렇게 &로 연결해주면 모두 적용 된다.
'개발 > JSP' 카테고리의 다른 글
multipart/form-data란?[JSP] (0) | 2021.11.19 |
---|---|
웹페이지 이미지 저장 하기[JSP] (0) | 2021.11.19 |
현재 내 웹페이지 경로 확인하기[JSP] (0) | 2021.11.19 |
[JSP] DecimalFormat 천단위 콤마, .jsp에서 출력하기 (0) | 2021.08.23 |
[JSP] 접속/접속자 IP 확인하기 (0) | 2021.08.09 |