728x90
반응형
설치 및 연동과 기본
JDBC(Java Database Connectivity)
자바에서 DB 소프트웨어와 연결하여 프로그램을 개발하기 위해 사용하는 API
자바 어플리케이션 <--------> JDBC API <---------> JDBC Driver <----------> MySQL
JDBC Driver 다운로드 - 라이브러리
- dev.mysql/downloads/connector/j
- platform Independent 선택
- No thanks, just start my download.
- zip 파일 다운로드
- 암축풀고 mysql-connector-j-8.0.31.jar 파일을 원하는 디렉토리에 저장
라이브러리 : 도구(툴) - (공사를 위한 도구, 툴)
프레임워크 : 틀(비워쟈 있는 건축물) - (이미 만들어진 건축물)
인텔리제이 JDBC 드라이버 추가
file -> Project Structure -> Library -> + 버튼 -> Java -> 드라이버 jar파일 선택 -> ok
JDBC API를 통해 DBMS와 연결
1. JDBC Driver를 로딩
Class.forName("JDBC 드라이버 패키지명");
Class.forNmae("com.mysql.cj.jdbc.Driver"); // 대소문자 구분핵서 써야한다.
2. JDBC API와 DBMS 연결
DriverManager.getConnection(주소, 아이디, 비밀번호); //연결을 성공하면 Connection 객체가 생성
주소 : jdbc:mysql//ip주소/db명?userSSL=true
Statement 인터페이스
- Connection 클래스의 createStatement() 메소그를 호출시 Statement 객체가 생성
- Statement 객체는 Statement 인터페이스를 구현한 객체
- executeUpdate() 메소드를 통해 insert, update, delete 구문을 실행항 수 있음
- executeQuery() 메소드를 통해 select 구문을 실행할 수 있음
연동
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Jdbc1 {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1/test?ussSSL=false"; // 127.0.0.1은 내 주소를 뜻함
String uid = "banana"; // 아이디
String upw = "2222"; // 비밀번호
try {
Class.forName("com.mysql.cj.jdbc.Driver"); //오류시 밑에있는 출력은 안나온다.
System.out.println("드라이버가 로드되었습니다.");
Connection conn =DriverManager.getConnection(url, uid, upw);//connection 객체를 리턴
// Connection 객체는 연결이 된 상태에서 sql구문을 사용한다.
// DriverManager은 연결을 의미한다.
System.out.println("MySQL 서버에 정상적으로 연결되었습니다.");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
Insert문
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Jdbc2 {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1/test?ussSSL=false";
String uid = "banana";
String upw = "2222";
String sql = "insert into product values('0000000099', '인텔리제이', '편해요',160000, now())";
try {
Class.forName("com.mysql.cj.jdbc.Driver"); //오류시 밑에있는 출력은 안나온다.
// 내부에 있는것은 패키지명을 뜻한다.
Connection conn = DriverManager.getConnection(url, uid, upw);//connection 객체를 리턴
// 겟 컨넥션을 통해 데이터베이스와 연결 -> 연결이 되면 connection 객체가 생성된다.
// Connection 객체는 연결이 된 상태에서 sql구문을 사용한다.
// DriverManager은 연결을 의미한다.
Statement stmt = conn.createStatement();// sql을 다룰 수 있는 상태로 만듬int cnt = stmt.executeUpdate(sql);
// String을 입력하지만 받아오는것은 int형이다. 얼마나 업데이트 되었는지?
// stmt는 sql을 실행해준다.
int cnt = stmt.executeUpdate(sql);// String을 입력하지만 받아오는것은 int형이다.
if (cnt >= 1) System.out.println(cnt + "개의 레코드가 삽입되었습니다.");
else System.out.println("삽입 실패");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
과제
aidev 데이터베이스를 다룰 수 있는 계정(자신이 원하는 계정 생성)으로 접속하여 tb_member에 사용자를
insert하는 프로그램을 만들어보자.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcTask {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1/aidev?ussSSL=false";
//mysql> create user 'song'@'%' identified by '2772';
//mysql> grant all privileges on aidev.* to 'song'@'%';
String uid = "song";
String upw = "2772";
String sql = "insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)" +
" values ('sakdwms', '2772', 'gnstjq', '010-456-4145', 'gnstjq@gnstjq.com', '231545', '41515')";
try {
Class.forName("com.mysql.cj.jdbc.Driver"); //오류시 밑에있는 출력은 안나온다.
Connection conn = DriverManager.getConnection(url, uid, upw);//connection 객체를 리턴
// Connection 객체는 연결이 된 상태에서 sql구문을 사용한다.
// DriverManager은 연결을 의미한다.
Statement stmt = conn.createStatement();// sql을 다룰 수 있는 상태로 만듬
int cnt = stmt.executeUpdate(sql);// String을 입력하지만 받아오는것은 int형이다. 얼마나 업데이트 되었는지?
if (cnt >= 1) System.out.println(cnt + "개의 레코드가 삽입되었습니다.");
else System.out.println("삽입 실패");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {//예외 발생 당시의 호출스택(Call stack)에 있던 메소드의 정보와 예외 결과를 화면에 출력함
e.printStackTrace();
}
}
}
반응형
'JDBC' 카테고리의 다른 글
JDBC 학생 성적 관리 프로그램 최종 (0) | 2022.11.01 |
---|---|
JDBC 서버 클라이언트 연동(학생 관리) (0) | 2022.10.20 |
JDBC(영어 단어장, 학생 성적 관리 프로그램 ) (0) | 2022.10.19 |
JDBC (select, delte,PreparedStatement) (0) | 2022.10.19 |