Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 리버싱
- AI
- cmd
- RIP
- 네트워크
- 라우터
- 머신러닝
- vector
- STP
- CISCO
- Java
- bastion host
- AWS
- 스위치
- Repository
- vlan
- Mac
- abex'crackme
- 자바
- Firewall
- dreamhack
- 크롤러
- Screening Router
- 머신러닝 프로세스
- 암호학
- Reversing
- Python
- docker
- 온프레미스
- 인공지능
Archives
- Today
- Total
Haekt‘s log
[JAVA] DB 연결 코딩하기 본문
사전 준비사항
https://haekt-log.tistory.com/60
- JDBC 연결 과정
1. import java.sql.*;
2. Driver 를 load
3. Mysql 연결을 위한 Connection 객체 생성.
4. DB와의 질의응답을 위한 Statement 객체 생성
5. 질의결과를 저장을 위한 ResultSet 객체 생성
6. 코드 실행 후, 앞서 생성했던 객체들을 Close()
* 여기서 질의응답은 Select 같은 쿼리문으로 DB와 결과를 주고받는 것을 말함.
* 질의결과의 예시로는 select 문으로 가져온 레코드 값이 있다.
// sql 회사마다 클래스 이름이 다르고, 작성 방법도 다를 수 있다..
// 아래 코드는 Mysql 의 코드이다.
1. import java.sql.*
DB 클래스들의 위치는 import java.sql 에 위치해 있다.
import java.sql.*;
이제 DB 를 다루는 클래스들을 사용할수 있게 되었다.
2. Driver 를 load
DB 에 연결하기 위해 DB Driver 를 불러오고 DBServer 의 정보를 작성해야한다.
// 1.드라이버 불러오기
// mysql은 "com.mysql.jdbc.Driver"
Class.forName("com.mysql.jdbc.Driver");
3. DB 연결을 위한 Connection 객체 생성
DB연결을 하는 부분이다.
// 2.DB연결하기
// Mysql 연결을 위한 Connection 객체로, 연결정보를 담는다.
Connection conn = null;
// DB와 연결하기 위해 DBurl, id, pw 와 같은 DB의 연결정보를 입력해야한다.
// url 의 작성방법은 다음과 같다. "jdbc:mysql://localhost/사용할db이름"
String DBurl = "jdbc:mysql://localhost:3306/test_db";
// 연결 결과를 Connection 객체에 담는다.
// @param getConnection(url, userName, password);
// @return Connection
conn = DriverManager.getConnection(DBurl, root, 1234);
4. DB와의 질의응답을 위한 Statement 객체 생성
DB 연결 후 Select 와 같은 질의문을 사용하기 위해서 Statement 객체를 생성한다.
// 3.질의응답을 위한 Statement 객체 생성
Statement stmt = null;
// 쿼리수행을 위해 Statement 객체를 생성한다.
stmt = con.createStatement();
// 예시 --------------------------------------------------------------
// sql 변수에 담긴 쿼리문 실행
stmt.executeQuery(sql);
// 예시 2
// insert문의 경우 인자값이 유동적인 경우가 있으므로
// ? 를 대신 넣어서 나중에 값을 넣기도 함
String sql = "INSERT INTO pet VALUES (?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
//예시 2의 sql문 데이터 binding
// setString(들어갈 위치, 들어갈 값 또는 변수 )
pstmt.setString(1, name);
pstmt.setString(2, owner);
pstmt.setString(3, species);
pstmt.setString(4, gender);
pstmt.setString(5, birth);
pstmt.setString(6, death);
5. 질의결과를 저장을 위한 ResultSet 객체 생성
Statement 객체를 통해 DB에 질의한 결과를 저장하는 객체이다.
Select 의 경우, 결과를 저장해야하기 때문에 ResultSet 객체를 생성한다.
// 4.쿼리문 실행
// 레코드를 ResultSet 객체 생성.
ResultSet rs;
// 쿼리문 실행 후, 결과 레코드를 ResultSet 객체에 저장
rs=stmt.executeQuery(sql);
// 레코드의 컬럼은 0번째가 아닌 1번째부터 시작한다.
// 처음에는 0번째를 가리키고 있으므로, 1번째로 이동시켜줘야한다.
while(rs.next()){
// DB에서 가져온 데이터의 자료형에 따라 getString, getInt 로 가져오면 된다.
// rs.getString("컬럼 이름");
String name = rs.getString("name");
int tel = rs.getInt("tel");
}
6. 코드 실행 후, 앞서 생성했던 객체들을 Close()
모든 과정을 거친 후, 앞서 생성했던 객체들을 Close 하여, DB와의 연결을 마무리한다.
// 5. 생성했던 객체 Close();
stmt.Close();
con.Close();
DB연결 코드 예시
import java.sql.*;
public class DB_file{
String dbDriver ="com.mysql.jdbc.Driver";
String dbUrl = "jdbc:mysql://localhost:3306/order_db";
String dbId = "root";
String dbPw = "1234";
Connection con = null;
Statement stmt = null;
// DB 와 연결을 하는 코드가 적혀진 생성자.
DB_file(){
try{
// db 드라이버를 불러옴
Class.forName( dbDriver );
// 연결 결과를 Connection 객체에 담는다.
con = DriverManager.getConnection( dbUrl, dbId, dbPw );
// 질의응답을 위해 Statement 객체 생성.
// show() 및 추후 추가될 함수를 위해 생성자에서 함.
stmt = con.createStatement();
System.out.print("mysql jdbc test: connect ok!!");
// 연결 실패시 에러를 출력
}catch(Exception e){
System.out.println(e);
}
}
// DB의 테이블의 내용을 모두 출력하는 함수.
public Vector show() {
// 레코드를 담을 벡터 변수
Vector<String> v= new Vector<String>();
try
{
// 실행할 쿼리문
String sql="select * from rent";
//레코드를 담을 ResultSet 객체
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
String ss="";
String s1=rs.getString("id");
String s2=rs.getString("menu");
String s3=rs.getString("price");
ss=s1+" "+s2+" "+s3;
v.add(ss);
}
System.out.println("get ok");
// 코드 실행 후, 생성한 객체 Close
stmt.close();
con.close();
}
catch(Exception e) // 실행을 try 하고, 예외 발생시, 오류 출력.
{
e.printStackTrace();
}
// 레코드를 담은 벡터변수 리턴.
return v;
}
public static void main(String args[]) {
new DB_file();
}
}
* 참고 : https://victorydntmd.tistory.com/145
'언어 > JAVA' 카테고리의 다른 글
[JAVA] GUI 버튼에 이벤트 넣기 (0) | 2022.11.30 |
---|---|
[JAVA] DB 연결을 위한 lib참조 Path 설정 (0) | 2022.11.29 |
[JAVA] 자바로 GUI (창)띄우기 (0) | 2022.10.12 |
[JAVA] 중첩된 반복문 선택해서 break 하기 (0) | 2022.10.12 |
[JAVA] Vector 의 사용법 (0) | 2022.10.04 |
Comments