SQLite - Java: 초보자 가이드
안녕하세요, 미래의 코딩 슈퍼스타! ? SQLite와 Java의 fascinierende 세상에 오신 것을 환영합니다. 이 흥미로운 여정에서 당신의 가이드로서 저는 매우 기쁩니다. 컴퓨터 과학을 몇 년 동안 가르쳐온 경험을 바탕으로, 이 튜토리얼이 끝나면 당신이 이룰 수 있는 것을 보고 놀라게 될 것이라 확신합니다. 그麼, 시작해 보겠습니다!
설치
데이터베이스 마법을 만들기 전에 도구를 설정해야 합니다. 이는 요리하기 전에 주방을 준비하는 것과 같은 것입니다. ?
- SQLite JDBC 드라이버를 여기에서 다운로드하세요.
- 다운로드한 JAR 파일을 Java 프로젝트의 classpath에 추가하세요.
다음은 모든 것이 올바르게 설정되었는지 확인하는 간단한 코드 스니펫입니다:
import java.sql.*;
public class SQLiteTest {
public static void main(String[] args) {
try {
Class.forName("org.sqlite.JDBC");
System.out.println("SQLite JDBC 드라이버가 성공적으로 로드되었습니다!");
} catch (ClassNotFoundException e) {
System.out.println("오류: SQLite JDBC 드라이버를 찾을 수 없습니다.");
e.printStackTrace();
}
}
}
이 코드를 실행할 때 "SQLite JDBC 드라이버가 성공적으로 로드되었습니다!"라는 메시지가 보인다면, 모든 준비가 끝났습니다!
데이터베이스 연결
이제 우리는 재료가 준비되었으니, 요리를 시작해 보겠습니다! ?️ 데이터베이스에 연결하는 것은 냉장고를 열고 것처럼 - 놀라운 것을 만드는 첫 단계입니다.
import java.sql.*;
public class SQLiteConnect {
public static void main(String[] args) {
Connection conn = null;
try {
String url = "jdbc:sqlite:test.db";
conn = DriverManager.getConnection(url);
System.out.println("SQLite 연결이 성공적으로 이루어졌습니다.");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}
이 코드는 "test.db"라는 이름의 SQLite 데이터베이스에 연결합니다. 파일이 존재하지 않는다면, SQLite가 자동으로 생성해 줍니다. 이게 멋질지 않나요?
테이블 생성
이제 연결이 되었으니, 테이블을 생성해 보겠습니다. 테이블은 데이터베이스 내의 스프레드시트라고 생각하면 됩니다. 우리는 간단한 "students" 테이블을 생성할 것입니다.
import java.sql.*;
public class CreateTable {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "CREATE TABLE IF NOT EXISTS students (" +
"id INTEGER PRIMARY KEY," +
"name TEXT NOT NULL," +
"grade INTEGER" +
");";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement()) {
stmt.execute(sql);
System.out.println("테이블이 성공적으로 생성되었습니다!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
이 코드는 "students" 테이블을 생성합니다. "IF NOT EXISTS" 부분은 테이블이 이미 존재하는지 확인하는 것입니다.
INSERT 연산
이제 테이블에 데이터를 추가해 보겠습니다. 이는 우리가 만든 스프레드시트에 내용을 채우는 것과 같습니다.
import java.sql.*;
public class InsertData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "INSERT INTO students(name,grade) VALUES(?,?)";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "Alice");
pstmt.setInt(2, 85);
pstmt.executeUpdate();
pstmt.setString(1, "Bob");
pstmt.setInt(2, 90);
pstmt.executeUpdate();
System.out.println("데이터가 성공적으로 추가되었습니다!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
이 코드는 두 명의 학생을 테이블에 추가합니다. SQL 문장의 "?"는 占位符로, setString()
과 setInt()
을 사용하여 채웁니다. 이는 문장의 빈칸을 채우는 것과 같습니다!
SELECT 연산
이제 데이터를 추가했으니, 데이터를 검색해 보겠습니다. 이는 우리의 스프레드시트에서 읽는 것과 같습니다.
import java.sql.*;
public class SelectData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "SELECT id, name, grade FROM students";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t" +
rs.getString("name") + "\t" +
rs.getInt("grade"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
이 코드는 "students" 테이블의 모든 데이터를 검색하고 출력합니다. while
루프는 스프레드시트의 각 행을 차례대로 탐색합니다.
UPDATE 연산
때로는 테이블에 이미 있는 데이터를 변경해야 합니다. Alice의 학점을 변경해 보겠습니다.
import java.sql.*;
public class UpdateData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "UPDATE students SET grade = ? WHERE name = ?";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, 95);
pstmt.setString(2, "Alice");
pstmt.executeUpdate();
System.out.println("데이터가 성공적으로 업데이트되었습니다!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
이 코드는 Alice의 학점을 95으로 변경합니다. 이는 스프레드시트의 셀을 지우고 새로운 값을 쓰는 것과 같습니다.
DELETE 연산
마지막으로, 테이블에서 데이터를 삭제하는 방법을 배워보겠습니다. Bob이 다른 학교로 이전하기로 했다면 어떻게 될까요?
import java.sql.*;
public class DeleteData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "DELETE FROM students WHERE name = ?";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "Bob");
pstmt.executeUpdate();
System.out.println("데이터가 성공적으로 삭제되었습니다!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
이 코드는 Bob을 "students" 테이블에서 삭제합니다. 이는 스프레드시트의 한 행을 지우는 것과 같습니다.
이제 Java에서 SQLite를 사용하는 기본적인 방법을 배웠습니다. 연습이 완벽을 만들어 줍니다, 그래서 이 예제를 실험해 보지 마세요. 얼마 지나지 않아 복잡한 데이터베이스 애플리케이션을 만드는 데 성공할 것입니다!
여기서 사용한 주요 메서드의 빠른 참조 표입니다:
메서드 | 설명 |
---|---|
DriverManager.getConnection(url) |
데이터베이스에 연결을 설정합니다 |
Connection.createStatement() |
SQL을 실행하기 위한 Statement 객체를 생성합니다 |
Connection.prepareStatement(sql) |
매개변수가 있는 SQL을 실행하기 위한 PreparedStatement를 생성합니다 |
Statement.execute(sql) |
결과 집합을 반환하지 않는 SQL 문장을 실행합니다 |
Statement.executeQuery(sql) |
SQL 쿼리를 실행하고 ResultSet을 반환합니다 |
PreparedStatement.setString(index, value) |
PreparedStatement의 String 매개변수를 설정합니다 |
PreparedStatement.setInt(index, value) |
PreparedStatement의 int 매개변수를 설정합니다 |
PreparedStatement.executeUpdate() |
INSERT, UPDATE, 또는 DELETE 문장을 실행합니다 |
ResultSet.next() |
ResultSet의 다음 행으로 이동합니다 |
ResultSet.getInt(columnName) |
현재 행의 int 값을 가져옵니다 |
ResultSet.getString(columnName) |
현재 행의 String 값을 가져옵니다 |
계속 코딩하고, 계속 배우며, 가장 중요한 것은 즐겁게 하세요! ??
Credits: Image by storyset