Dependency 추가
Maven 레파지토리 사이트에서 mariadb 검색
MariaDB Java Client 선택
원하는 버전 선택
나는 사람들이 제일 많이 다운받은 버전인 3.3.3 버전을 선택했다.
Maven 탭에 있는 dependency 코드 복사
pom.xml 에 붙여넣기
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies>
dependency 입력 후 pom.xml -> Maven -> Sync Project 클릭
mariadb jar 파일 추가
프로젝트를 Tomcat으로 실행하고 있기 때문에, 톰캣이 설치되어 있는 곳에 mariadb를 추가해줘야 한다.
mariadb dependency 에서 jar 부분을 누르면 자동으로 다운로드가 된다.
톰캣 폴더 > lib에 다운 받은 mariadb jar 파일 붙여넣기
DB 연결
일단 가상머신에 DB 서버를 만들어주고, mariadb 설치 후 설정을 해주었다.
(IP 설정, mariadb 설치, Database 생성, db 계정 생성 후 데이터베이스에 권한 부여)
나는 abc 라는 이름의 데이터베이스를 만들어주고, 내 이니셜인 psy 라는 계정을 생성 후 권한을 부여해줬다.
Connection 객체 생성 후 DB 연결
connection 객체 생성 후 DB 서버 정보 입력 (url, user, password)
getConnection 이라는 메소드에 DB url, DB user, DB password를 순서대로 넣어준다.
import java.sql.*;
public class Main {
public static void main(String[] args) {
try {
// 서버 접속하는 클라이언트 코드
Connection connection = DriverManager.getConnection(
"jdbc:mariadb://10.10.10.10:3306/abc",
"psy", "qwer1234"
);
} catch (SQLException e) {
throw new RuntimeException(e);
}
System.out.println("Hello, World!");
}
}
SQL 실행
SQL을 실행할 때는 createStatement 메소드와 Statement를 사용해서 서버에 SQL을 실행해준다.
SELECT를 실행할 때는 executeQuery() 메소드로 실행한다.
// 서버에 SQL을 실행하는 코드
Statement statement = connection.createStatement();
// SELECT 실행할 때는 executeQuery() 메소드로 실행
statement.executeQuery("SELECT * FROM student");
// 실행 결과를 가져오는 코드
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
INSERT, UPDATE, DELETE를 실행할 때는 executeUpdate() 메소드로 실행한다.
int result = statement.executeUpdate("INSERT INTO student VALUES ('choi', 40)");
System.out.println(result); // 1
SQL문에 변수 넣기
문자열은 작은 따옴표 ' ' 사이에 큰 따옴표" " 를 넣고, 넣고 싶은 변수를 +로 연결해준다.
' " + 변수명 + " '
숫자를 넣고 싶을 때는 큰 따옴표 " " 와 + 사이에 변수를 넣는다.
" + 변수명 + "
String name = "test01";
int age = 10;
// DB 연결 코드 생략
// ...
int result = statement.executeUpdate("INSERT INTO student VALUES ('" + name + "', " + age + ")");
전체 코드
Select.java
import java.sql.*;
public class Select {
public static void main(String[] args) {
try {
// 서버 접속하는 클라이언트 코드
Connection connection = DriverManager.getConnection(
"jdbc:mariadb://10.10.10.10:3306/abc",
"psy", "qwer1234"
);
// 서버에 SQL을 실행하는 코드
Statement statement = connection.createStatement();
// SELECT 실행할 때는 executeQuery() 메소드로 실행
statement.executeQuery("SELECT * FROM student");
// 실행 결과를 가져오는 코드
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
Insert.java
import java.sql.*;
public class Insert {
public static void main(String[] args) {
try {
// 서버 접속하는 클라이언트 코드
Connection connection = DriverManager.getConnection("jdbc:mariadb://10.10.10.10:3306/abc", "psy", "qwer1234");
// 서버에 SQL을 실행하는 코드
Statement statement = connection.createStatement();
// INSERT, UPDATE, DELETE 실행할 때는 executeUpdate()를 사용
int result = statement.executeUpdate("INSERT INTO student VALUES ('choi', 40)");
// 영향을 받은 행의 개수 출력
System.out.println(result);
statement.close();
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
UserServlet.java
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
@WebServlet(name = "UserServlet", value = "/user")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 클라이언트로부터 데이터를 받아서 name 변수, age 변수에 저장
String name = request.getParameter("name");
String age = request.getParameter("age");
// 변수에 저장된 내용을 DB 테이블에 저장
try {
Connection connection = DriverManager.getConnection(
"jdbc:mariadb://10.10.10.10:3306/abc",
"psy", "qwer1234");
System.out.println("connected");
// 서버에 SQL을 실행하는 코드
Statement statement = connection.createStatement();
// INSERT, UPDATE, DELETE 실행할 때는 executeUpdate()를 사용
int result = statement.executeUpdate("INSERT INTO student VALUES ('" + name + "', " + age + ")");
System.out.println(result);
statement.close();
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("서블릿 코드를 GET으로 실행함");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
http://localhost:8080/user?name=woo&age=35 로 가면 student가 만들어지는 걸 확인할 수 있다.
'BE > Java' 카테고리의 다른 글
[Java] DTO 설계 시 고려사항 (0) | 2025.01.10 |
---|---|
[Java] multipart/form-data란? / form 태그로 서버에 파일 전달하기 (0) | 2025.01.09 |
[Java] SQL Injection, PreparedStatement (2) | 2025.01.09 |
[Java] Servlet 프로젝트 구조 / 로그인, 회원가입 기능 구현 (0) | 2025.01.08 |
[Java] IntelliJ + Tomcat 연동, Servlet 설정 (파라미터) (0) | 2025.01.08 |