import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//checked exception try-catch문 반드시 사용
} catch(ClassNotFoundException e){
System.out.println(e.getMessage());
// 드라이버 클래스를 찾지 못한다면 오류 발생
} catch(SQLException e) {
System.out.println(e.getMessage());
// DB 접속정보가 틀렸다면 오류 발생
}
}
}
🤔 Class.forName("com.mysql.cj.jdbc.Driver");은 어디서 왔을까?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
Connection conn = null;
// DB접속 => DB의 URL, Port, ID, PW, etc...
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3308/jdbc_test?";
/* localhost 대신 127.0.0.1 사용 가능
* 3308(기본 3306) : 설치 시 지정한 포트 번호
* 맨 뒤 : 연결 할 DB 이름 */
url += "useSSL=false&"; // 인증방식 설정 : SSL로 접속할 것인가?
url += "serverTimezone=Asia/Seoul&"; // 서버시간 설정
// or "serverTimezone=UTC&";
url += "useUnicode=true&"; // 유니코드 사용여부 설정
url += "characterEncoding=UTF-8"; // 인코딩 방식 지정
url += "allowPublicKeyRetrieval=true"; // mysql 연동 시 에러 처리
// 8.0 이후 설정 추가해야 오류 발생하지 X
String uid = "root";
String upw = "1234";
/* url : MySQL DB의 접속 경로
* uid : MySQL DB의 접속 계정 (사용자아이디)
* upw : MySQL DB의 접속 비밀번호 (인증코드) */
conn = DriverManager.getConnection(url, uid, upw);
} catch(ClassNotFoundException e){
System.out.println(e.getMessage());
} catch(SQLException e) {
System.out.println(e.getMessage());
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
// 쿼리 사용을 위함
ResultSet res = null;
// Statement를 통해 반환된 데이터 : method or getter 사용
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3308/jdbc_test?";
url += "useSSL=false&";
url += "serverTimezone=Asia/Seoul&";
url += "useUnicode=true&";
url += "characterEncoding=UTF-8";
String uid = "root";
String upw = "1234";
conn = DriverManager.getConnection(url, uid, upw);
stmt = conn.createStatement();
String sql = "select * from data_sample";
res = stmt.executeQuery(sql);
System.out.println("번호 이름");
System.out.println("-----------");
while (res.next()) {
int no = res.getInt("no");
String name = res.getString("name");
System.out.print(no + " ");
System.out.println(name);
}
} catch(ClassNotFoundException e){
System.out.println(e.getMessage());
} catch(SQLException e) {
System.out.println(e.getMessage());
}
}
}
🤔 while (res.next()) {...}
: Table에서 다음 행이 있다면 true를, 없다면 false를 반환
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet res = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3308/jdbc_test?";
url += "useSSL=false&";
url += "serverTimezone=Asia/Seoul&";
url += "useUnicode=true&";
url += "characterEncoding=UTF-8";
String uid = "root";
String upw = "1234";
conn = DriverManager.getConnection(url, uid, upw);
stmt = conn.createStatement();
String sql = "select * from data_sample";
res = stmt.executeQuery(sql);
System.out.println("번호 이름");
System.out.println("-----------");
while (res.next()) {
int no = res.getInt("no");
String name = res.getString("name");
System.out.print(no + " ");
System.out.println(name);
}
res.close();
stmt.close();
conn.close();
// 실행한 "역순"으로 닫기
} catch(ClassNotFoundException e){
System.out.println(e.getMessage());
} catch(SQLException e) {
System.out.println(e.getMessage());
}
}
}