SQLite JDBC는 Java에서 SQLite 데이터베이스 파일에 액세스하고 생성하기 위한 라이브러리입니다.
우리의 SQLiteJDBC 라이브러리는 Windows, macOS, Linux 등을 포함한 주요 OS용 기본 라이브러리가 단일 JAR(Java Archive) 파일로 결합되어 있으므로 구성이 필요하지 않습니다.
프로젝트가 유지 관리되지만 적극적으로 개발되지는 않습니다.
우리는 SQLite의 모든 새 버전을 따르고 해당 드라이버 버전을 출시할 예정입니다.
버그를 조사하고 가능하다면 수정하겠습니다.
새로운 기능은 풀 요청에 의해 구동됩니다.
현재 프로젝트의 관리자는 gotson입니다.
➡️ USAGE.md에서 더 많은 사용 예와 구성을 확인할 수 있습니다.
SQLite JDBC는 JDBC API를 통해 SQLite 데이터베이스에 액세스하기 위한 라이브러리입니다. JDBC의 일반적인 사용법은 JDBC Tutorial 또는 Oracle JDBC Documentation을 참조하세요.
sqlite-jdbc-3.47.1.0.jar
다운로드한 후 이 jar 파일을 클래스 경로에 추가하세요.
코드에서 SQLite 데이터베이스 연결을 엽니다. (아래 예 참조)
sqlite-jdbc-3.47.1.0.jar
이 현재 디렉토리에 있다고 가정합니다.
> javac Sample.java
> java -classpath " .;sqlite-jdbc-3.47.1.0.jar " Sample # in Windows
or
> java -classpath " .:sqlite-jdbc-3.47.1.0.jar " Sample # in macOS or Linux
name = leo
id = 1
name = yui
id = 2
import java . sql . Connection ;
import java . sql . DriverManager ;
import java . sql . ResultSet ;
import java . sql . SQLException ;
import java . sql . Statement ;
public class Sample
{
public static void main ( String [] args )
{
// NOTE: Connection and Statement are AutoCloseable.
// Don't forget to close them both in order to avoid leaks.
try
(
// create a database connection
Connection connection = DriverManager . getConnection ( "jdbc:sqlite:sample.db" );
Statement statement = connection . createStatement ();
)
{
statement . setQueryTimeout ( 30 ); // set timeout to 30 sec.
statement . executeUpdate ( "drop table if exists person" );
statement . executeUpdate ( "create table person (id integer, name string)" );
statement . executeUpdate ( "insert into person values(1, 'leo')" );
statement . executeUpdate ( "insert into person values(2, 'yui')" );
ResultSet rs = statement . executeQuery ( "select * from person" );
while ( rs . next ())
{
// read the result set
System . out . println ( "name = " + rs . getString ( "name" ));
System . out . println ( "id = " + rs . getInt ( "id" ));
}
}
catch ( SQLException e )
{
// if the error message is "out of memory",
// it probably means no database file is found
e . printStackTrace ( System . err );
}
}
}
우리의 SQLite JDBC 드라이버 패키지(예: sqlite-jdbc-3.47.1.0.jar
)에는 세 가지 유형의 기본 SQLite 라이브러리( sqlitejdbc.dll
, sqlitejdbc.dylib
, sqlitejdbc.so
)가 포함되어 있으며, 각각은 Windows, macOS 및 Linux용으로 컴파일되었습니다. . 프로그램이 org.sqlite.JDBC
드라이버를 로드하면 적절한 기본 라이브러리 파일이 OS의 임시 폴더에 자동으로 추출됩니다.
sqlite-jdbc-3.6.19부터 기본적으로 컴파일된 SQLite 엔진은 다음 운영 체제에 사용됩니다.
x86 | x86_64 | armv5 | armv6 | armv7 | arm64 | ppc64 | riscv64 | |
---|---|---|---|---|---|---|---|---|
윈도우 | ✔ | ✔ | ✔ | ✔ | ||||
macOS | ✔ | ✔ | ||||||
리눅스(libc) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
리눅스(musl) | ✔ | ✔ | ✔ | |||||
안드로이드(API 레벨 24+) | ✔ | ✔ | ✔ | ✔ | ||||
FreeBSD | ✔ | ✔ | ✔ |
위에 나열되지 않은 다른 OS에서는 순수 Java SQLite가 사용됩니다. (3.7.15 이전 버전에 적용)
OS에 맞는 네이티브 라이브러리를 사용하려면 처음부터 소스를 빌드하세요.
Sqlite JDBC는 버전 3.40.1.0부터 GraalVM 기본 이미지를 즉시 지원합니다. 이전에는 일부 버전에 대한 기초적인 지원이 있었지만 CI에서는 이를 적극적으로 테스트하지 않았습니다.
기본적으로 컴파일 대상의 sqlitejdbc
라이브러리는 필수 JNI 구성과 함께 네이티브 이미지에 포함됩니다. 런타임 시 이 라이브러리는 임시 폴더로 추출되어 거기에서 로드됩니다. 그러나 더 빠른 시작을 위해서는 빌드 시 org.sqlite.lib.exportPath
속성을 설정하는 것이 좋습니다. 그러면 빌드 시 sqlitejdbc
라이브러리가 지정된 디렉터리로 내보내지고 라이브러리는 리소스로 포함되지 않습니다. 결과적으로 네이티브 이미지 자체는 약간 더 작아지고 런타임에 라이브러리를 내보내는 오버헤드가 제거되지만 런타임에 라이브러리를 찾을 수 있는지 확인해야 합니다. 이를 수행하는 가장 좋은 방법은 실행 파일 옆에 라이브러리를 배치하는 것입니다.
native-image -Dorg.sqlite.lib.exportPath= ~ /outDir -H:Path= ~ /outDir -cp foo.jar org.example.Main
그러면 sqlitejdbc
공유 라이브러리와 기본 이미지 출력이 모두 ~/outDir
폴더에 배치됩니다.
이 예에서는 Native-build-tools Maven 플러그인을 사용합니다.
< plugin >
< groupId >org.graalvm.buildtools</ groupId >
< artifactId >native-maven-plugin</ artifactId >
< configuration >
< buildArgs >
< buildArg >-Dorg.sqlite.lib.exportPath=${project.build.directory}</ buildArg >
</ buildArgs >
</ configuration >
</ plugin >
그러면 프로젝트의 /target
폴더에 sqlitejdbc
라이브러리가 자동으로 배치되어 기능적 실행 환경이 생성됩니다. 결과 앱을 패키징할 때 배포 번들에 라이브러리를 포함하기만 하면 됩니다.
Maven Central 또는 릴리스 페이지에서 다운로드하세요.
< dependencies >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
</ dependencies >
개발 버전의 스냅샷은 Sonatype의 스냅샷 저장소에서 확인할 수 있습니다.
Maven Central 리소스는 GPG를 사용하여 서명되며 .asc로 끝나는 서명 파일은 다른 다운로드와 동일한 위치에서 사용할 수 있습니다.
현재 릴리스 서명에 사용되는 키는 다음과 같습니다.
-----PGP 공개 키 블록 시작----- 댓글: C1CB A75E C9BD 0BAF 8061 9354 59E0 5CE6 1818 7ED4 댓글: Taro L. Saito(GitHub Actions용) <[email protected]> xjMEYuRVGhYJKwYBBAHaRw8BAQdA2Dp4m1Yhtb1g94pQzzL24FuP6b9KXF8lP9Dh hZnynhfNM1Rhcm8gTC4gU2FpdG8gKEZvciBHaXRIdWIgQWN0aW9ucykgPGxlb0B4 ZXJpYWwub3JnPsKUBMWCgA8FiEEwcunXsm9C6+AYZNUWeBc5hgYftQFAmLkVRoC GwMFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEFngXOYYGH7UfPwBAK7x TVRebZeWcAwmGaMUsbg7SgJou8xnkhByObPLUC/4AQDPsZeYmi4KXyXPzmqhCicd Y+ZSJWIDQqitK2ujPDFXA844BGLkVRoSCisGAQQBl1UBBQEBB0Atu9kejBi+6wfO T0a9z/LYEEdNXM/VX6xt1onKToPPdQMBCAfCeAQYFgoAIBYhBMHLp17JvQuvgGGT VFngXOYYGH7UBQJi5FUaAhsMAAoJEFngXOYYGH7UlMABAKyRCazhVyUFg5FOpAnm ckBY38CaMGPPLXVyY8Kr6dYFAP9wYLu7nsDZCOXkAgS+et4Pk1WZCggoYUkxsX1o 0KZXBQ== =와이아스 -----PGP 공개 키 블록 종료-----
프로젝트 버전은 jar에 번들로 제공되는 SQLite 라이브러리 버전을 따르며, 프로젝트 증분을 나타내는 추가 숫자가 포함됩니다.
예를 들어 SQLite 버전이 3.39.2
인 경우 프로젝트 버전은 3.39.2.x
가 됩니다. 여기서 x
0에서 시작하고 SQLite 버전을 변경하지 않는 모든 릴리스마다 증가합니다.
SQLite 버전이 3.40.0
으로 업데이트되면 프로젝트 버전도 3.40.0.0
으로 업데이트됩니다.
No suitable driver found for jdbc:sqlite:
해결하려면 셰이드 플러그인 변환기를 추가해야 할 수도 있습니다.
< transformer
implementation= " org.apache.maven.plugins.shade.resource.AppendingTransformer " >
< resource >META-INF/services/java.sql.Driver</ resource >
</ transformer >
< dependency >
< groupId >org.xerial</ groupId >
< artifactId >sqlite-jdbc</ artifactId >
< version >3.47.1.0</ version >
</ dependency >
우리는 항상 다음을 찾고 있습니다:
이슈나 PR에 대한 리뷰어를 확인할 수 있습니다.
PR을 제출하는 기여자를 확인할 수 있습니다. 그리고
우리의 기여 가이드를 읽어보세요.