자바 기반 JDBC 데이터베이스 연결 및 기본 작업
2.JDBC 조작 데이터베이스,조작 표 절차
JDBC 가 데이터베이스 와 표를 조작 하 는 절 차 를 정리 한 후에 그것들 을 상세 하 게 소개 하 겠 습 니 다.
1.드라이버 등록(한 번 만)
2.연결 만 들 기(연결)
3.SQL 을 실행 하 는 문 구 를 만 듭 니 다(Statement)
4.실행 문
5.실행 결과 처리(ResultSet)
6.자원 방출
여기 보시 면 익숙 하 시 죠?맞아요.앞에서 Mysql 을 배 운 것 처럼 먼저 JDBC 의 구조 와 데이터 베 이 스 를 연결 하 는 것 을 소개 하 겠 습 니 다.
3.JDBC 시스템 구조 와 JDBC API
JDBC 시스템 구 조 는 아래 두 부분 으로 구성 된다.
4.등록 및 로드 드라이브
드라이버 인터페이스
앞에서 말 했 듯 이 JDBC 는 하나의 인터페이스 와 서로 다른 데이터 베 이 스 를 통 해 JDBC 의 구동 을 제공 하여 데 이 터 를 완성 하 는 것 입 니 다.따라서 우 리 는 구동 을 JDBC 에 불 러 오고 로드 구동 은 두 가지 방식 이 있 습 니 다.
방식 1:JDBC 드라이브 를 불 러 오 려 면 Class 류 의 정적 방법 forName()을 호출 하여 불 러 올 JDBC 드라이브 의 클래스 이름 을 전달 해 야 합 니 다.
Class.forName(“com.mysql.jdbc.Driver”);
방식 2:DriverManager 클래스 는 드라이버 관리자 클래스 로 드라이버 관 리 를 담당 합 니 다.
DriverManager.registerDriver(com.mysql.jdbc.Driver);
드라이버 인터페이스의 드라이버 클래스 에 정적 코드 블록 이 포함 되 어 있 기 때문에 드라이버 클래스 의 인 스 턴 스 를 명시 적 으로 호출 하지 않 습 니 다.이 정적 코드 블록 에 서 는 드라이버 Manager.registerDriver()방법 으로 자신의 인 스 턴 스 를 등록 합 니 다.5.연결 구축(연결)
jdbc: :
:JDBC URL jdbc
:
: 。 , 。 ( ip ), ,
다음은 제 가 흔히 볼 수 있 는 JDBC URL 을 몇 개 열거 하 겠 습 니 다.여러분 이 사용 하 실 때 바로 복사 하 시 면 됩 니 다.
// Oracle , :
jdbc:oracle:thin:@localhost:1521:DatabaseName
// SQLServer , :
jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=sid
// MYSQL , :
jdbc:mysql://localhost:3306/DatabaseName
// , url
jdbc:mysql://localhost:3306/ ?useUnicode=true&characterEncoding=UTF-8
얘 들 아,우리 가 자바 를 사용 하여 데이터베이스 에 데 이 터 를 삽입 할 때 중국어 라면 먼저 데이터베이스 와 표 의 인 코딩 은 utf 8 이 고,그 다음 에 우 리 는 URL 에서 인 코딩 이 UTF-8 이 라 고 성명 해 야 한다.그렇지 않 으 면 데 이 터 를 삽입 하 는 것 은?
이다.만약 에 이 문제 에 부 딪 히 면 무시 해 야 한다.자,다음은 데이터 베 이 스 를 연결 하 는 예제 코드 입 니 다.여 기 는 Mysql 데이터 베 이 스 를 조작 합 니 다.
package com.company;
//
import org.junit.Test;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class Demo1 {
/*
* connect
* */
public static void main(String[] args) {
System.out.println("JDBC Test...");
}
// Driver
@Test
public void test1() throws SQLException {
//
Driver driver=new com.mysql.jdbc.Driver();
Properties p1 = new Properties();
p1.setProperty("user", "root");
p1.setProperty("password", "mysql123");
Connection connect = driver.connect("jdbc:mysql://localhost:3306/myemployees", p1);
System.out.println("connect = " + connect);
}
// DriverManager
@Test
public void test2() throws SQLException {
com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
Properties p1 = new Properties();
p1.setProperty("user", "root");
p1.setProperty("password", "mysql123");
DriverManager.registerDriver(driver);
Connection connection = DriverManager.getConnection
("jdbc:mysql://localhost:3306/myemployees", p1);
System.out.println("connection = " + connection);
}
// , IO
@Test
public void test3() throws Exception {
Properties p = new Properties();
FileInputStream fis = new FileInputStream("p.properties");
p.load(fis);
fis.close();
Class.forName(p.getProperty("driverClass"));
Connection connection = DriverManager.getConnection(p.getProperty("url"),
p.getProperty("user"), p.getProperty("password"));
System.out.println("connection = " + connection);
}
}
properties 파일 내용
url=jdbc:mysql://localhost:3306/myemployees
user=root
password=mysql123
driverClass=com.mysql.jdbc.Driver
6.Prepared Statement 사용등록 드라이브 와 데이터 베 이 스 를 연결 하 는 것 을 소개 합 니 다.다음은 SQL 을 조작 하 는 것 입 니 다.JDBC 에서 SQL 을 조작 하려 면 Connection 대상 의 prepared Statement()방법 으로 prepared Statement 대상 을 가 져 와 야 합 니 다.
Prepared Statement 인 터 페 이 스 는 Statement 의 하위 인터페이스 로 미리 편 역 된 SQL 문 구 를 표시 합 니 다.
Prepared Statement 대상 이 대표 하 는 SQL 문장의 매개 변 수 는 물음표(?)를 사용 합 니 다.이 매개 변 수 를 설정 하려 면 Prepared Statement 대상 의 setXxx()방법 을 사용 하 십시오.setXxx()방법 은 두 개의 매개 변수 가 있 습 니 다.첫 번 째 매개 변 수 는 설정 할 SQL 문장의 매개 변수의 색인(1 부터)이 고 두 번 째 는 설 정 된 SQL 문장의 매개 변수의 값 입 니 다.
SQL 을 조작 하기 전에 데이터 형식 을 설명해 야 합 니 다.SQL 과 자바 의 데이터 형식 이름 이 다르다 는 것 을 알 고 있 기 때문에 인 코딩 할 때 주의해 야 합 니 다.
자바 형식
SQL 형식
boolean
BIT
byte
TINYINT
short
SMALLINT
int
INTEGER
long
BIGINT
String
CHAR,VARCHAR,LONGVARCHAR
byte array
BINARY , VAR BINARY
java.sql.Date
DATE
java.sql.Time
TIME
java.sql.Timestamp
TIMESTAMP
Prepared StatementSQL 을 사용 하 는 작업 절차
1.연결 대상 의 preparedStatement 방법 을 호출 하여 preparedStatement 대상 을 만 듭 니 다.
2.사전 컴 파일 된 SQL 문 구 를 완성 합 니 다.
3.SQL 문장의 자리 표시 자 에 값 을 부여 합 니 다.
4.SQL 문 구 를 제출
5.자원 방출
다음은 SQL 첨삭 과 검 사 를 위 한 예제 코드 입 니 다.
// PreparedStatement
package com.company.jdbc;
import org.junit.Test;
import java.io.FileInputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/*
, , ,
*/
public class CRUDDemo {
/*
CREATE TABLE student(
sid INT,
sname VARCHAR(20),
sage INT
)
*/
@Test
public void test() throws SQLException {
//1.
Connection connection = JDBCUtils.getConnection();
//2.
// ? : ( )
String sql = "insert into student(sid,sname,sage) values(?,?,?)";
PreparedStatement ps = connection.prepareStatement(sql);
//3.
/*
setInt(int parameterIndex, int x)
parameterIndex : ( )
x :
*/
ps.setInt(1,100);
//
ps.setString(2,"longge");
ps.setInt(3,20);
//4. sql
// :
int result = ps.executeUpdate();// , ,
System.out.println(" "+result+" ");
//5.
JDBCUtils.close(ps,connection);
}
/*
*/
@Test
public void test2() throws SQLException {
//1.
Connection connection = JDBCUtils.getConnection();
//2.
String sql = "update student set sid=? where sid=?";
PreparedStatement ps = connection.prepareStatement(sql);
//3.
ps.setInt(1,10);
ps.setInt(2,100);
//4. sql
int result = ps.executeUpdate();
System.out.println(" "+result+" ");
//5.
JDBCUtils.close(ps,connection);
}
/*
*/
@Test
public void test3() throws SQLException {
//1.
Connection connection = JDBCUtils.getConnection();
//2.
String sql = "delete from student where sid=?";
PreparedStatement ps = connection.prepareStatement(sql);
//3.
ps.setInt(1,10);
//4. sql
int i = ps.executeUpdate();
System.out.println(" "+i+" ");
//5.
JDBCUtils.close(ps,connection);
}
/*
*/
@Test
public void test4() throws Exception {
List<Student> students = getStudent();
for (Student s : students) {
System.out.println(s);
}
}
public List<Student> getStudent() throws Exception {
//1.
Connection connection = JDBCUtils.getConnection();
//2.
PreparedStatement ps = connection.prepareStatement("select sid,sname,sage from student");
//3. sql
ResultSet resultSet = ps.executeQuery();//
List<Student> list = new ArrayList<>();
//4. ResultSet
while(resultSet.next()){//
/*
getInt(String columnLabel) :
getInt(int columnIndex) :
*/
int sid = resultSet.getInt("sid");
String sname = resultSet.getString("sname");
int sage = resultSet.getInt("sage");
//System.out.println(sid + " " + sname + " " + sage);
list.add(new Student(sid,sname,sage));
}
//5.
JDBCUtils.close(ps,connection,resultSet);
return list;
}
}
JDBCutils 데이터베이스 연결 도구 클래스
//JDBCUtils ,
package com.company.jdbc;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String driverClass;
private static String url;
private static String username;
private static String password;
static{
FileInputStream fis = null;
try {
//1.
// Properties
//1. Properties
Properties p = new Properties();
//2.
fis = new FileInputStream("jdbc.properties");
p.load(fis);
driverClass = p.getProperty("driverClass");
url = p.getProperty("url");
username = p.getProperty("username");
password = p.getProperty("password");
}catch (Exception e){
//
e.printStackTrace();
//
throw new RuntimeException("xxxxxxxx");
}finally {
if (fis != null){
//3.
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/*
*/
public static Connection getConnection(){
try {
Class.forName(driverClass);
//
Connection connection = DriverManager.getConnection(url, username, password);
return connection;
}catch (Exception e){
e.printStackTrace();
throw new RuntimeException(" ");
}
}
/*
*/
public static void close(PreparedStatement ps, Connection connection) {
if (ps != null){
try {
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (connection != null){
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static void close(PreparedStatement ps, Connection connection, ResultSet resultSet) {
close(ps,connection);
if (resultSet != null){
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
7.ResultSet 에 대한 설명앞에서 데 이 터 를 삭제 하고 검사 하 는 작업 에서 조회 작업 은 비교적 복잡 하 다.왜냐하면 우 리 는 데이터 베 이 스 를 되 돌려 주 는 결 과 를 받 아야 하기 때문에 우 리 는 ResultSet 인 터 페 이 스 를 알 아야 한다.이것 은 데이터 베이스 업 체 에 의 해 이 루어 진다.
조 회 는 Prepared Statement 의 executeQuery()방법 을 호출 해 야 합 니 다.조회 결 과 는 ResultSet 대상 입 니 다.
ResultSet 대상 은 현재 데이터 줄 을 가리 키 는 커서 를 유지 합 니 다.처음에 커서 는 첫 줄 전에 ResultSet 대상 의 next()방법 으로 다음 줄 로 이동 할 수 있 습 니 다.구체 적 인 방법 은 바 이 두 를 스스로 정할 수 있 습 니 다.
ResultSet:결과 집합 을 대표 합 니 다.JDBC 를 사용 하여 조회 한 결 과 를 봉 인 했 습 니 다.Prepared Statement 대상 의 executeQuery()를 호출 하면 결과 집합 을 얻 을 수 있 습 니 다.ResultSet 이 되 돌아 오 는 것 은 사실상 데이터 시트 입 니 다.데이터 시트 의 첫 번 째 기록 앞 을 가리 키 는 지침 이 있 습 니 다.
8.총화
이 장 에 서 는 주로 JDBC 와 JDBC 가 데이터 베 이 스 를 어떻게 연결 하고 데이터 의 첨삭 과 수정 작업 을 실현 하 는 지 소개 한다.다음 장 은 JDBC 의 확장 지식 이다.>우리 가 실현 한 데이터 베 이 스 를 연결 하 는 도구 류 는 그렇게 엄밀 하지 않 기 때문에 다음 장 은 하나의 구 조 를 소개 하 는 것 이다.앞으로 데이터 베 이 스 를 연결 하 는 데 이렇게 번 거 롭 지 않 아 도 된다.
자바 기반 의 JDBC 데이터베이스 연결 과 기본 작업 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 JDBC 와 관련 된 데이터베이스 연결 과 기본 작업 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 시각화 도구 FineReport와 AWS RedShift 연결(JDBC 방법)Amazon Redshift는 클라우드의 완전 관리형, 페타바이트 규모 데이터 웨어하우스 서비스입니다. 수백 기가바이트의 데이터로 시작하여 페타바이트 이상까지 확장할 수 있습니다. 이렇게 하면 고객의 비즈니스와 고객...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.