Java JDBC 使用 SQLite/連線
假設您的類路徑已建立,並且您的 JDK 已準備好,我們可以快速且粗略地嘗試建立一個非常簡單的資料庫,其中只有一個表。由於這是一種可拋棄的“HelloWorld”類固醇迷你應用程式,我們不妨稱其為“HelloDatabase”。
您真正需要了解 JDBC 驅動程式的一件事是:它的註冊驅動程式名稱。對於 SQLite,它是
- org.sqlite.JDBC
此值用於在 Java 中註冊驅動程式。不同資料庫實現的不同 JDBC 驅動程式具有不同的註冊驅動程式名稱。雖然完全有可能透過程式設計方式從包含的 jar 檔案中發現驅動程式名稱,但這超出了本文件的範圍,並且可以在網際網路上(例如在 [1])快速查詢。
現在我們開始構建用於建立資料庫連線的 URL 字串。不同資料庫型別的不同 JDBC 具有不同的 URL 定義;SQLite URL 字串只需要知道它是一個型別為“sqlite”的 jdbc,以及我們要使用的目標資料庫的名稱。例如,如果我們希望連線到一個名為 _order.db_ 的新資料庫,我們需要組成一個字串,該字串包含字串“jdbc”,資料庫型別名稱(在本例中為“sqlite”)以及資料庫的名稱,用冒號分隔,即
- jdbc:sqlite:order.db
其他示例
- jdbc:sqlite://dirA/dirB/dbfile
- jdbc:sqlite:/DRIVE:/dirA/dirB/dbfile
- jdbc:sqlite:///COMPUTERNAME/shareA/dirB/dbfile
還提供了一個記憶體選項。
作為此迷你應用程式(以及大多數簡單 JDBC 聯結器)的最小匯入集,您需要以下匯入集,如以下程式碼所示。這兩個 .*MetaData 匯入很有用,通常在除錯和調查目的中是必要的,並且對於抽象和最終減少程式所需的硬編碼數量也很方便。
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.DatabaseMetaData;
public class HelloDatabase
{
public static void main (String[] args) throws Exception
{
// register the driver
String sDriverName = "org.sqlite.JDBC";
Class.forName(sDriverName);
// now we set up a set of fairly basic string variables to use in the body of the code proper
String sTempDb = "hello.db";
String sJdbc = "jdbc:sqlite";
String sDbUrl = sJdbc + ":" + sTempDb;
// which will produce a legitimate Url for SqlLite JDBC :
// jdbc:sqlite:hello.db
int iTimeout = 30;
String sMakeTable = "CREATE TABLE dummy (id numeric, response text)";
String sMakeInsert = "INSERT INTO dummy VALUES(1,'Hello from the database')";
String sMakeSelect = "SELECT response from dummy";
// create a database connection
Connection conn = DriverManager.getConnection(sDbUrl);
try {
Statement stmt = conn.createStatement();
try {
stmt.setQueryTimeout(iTimeout);
stmt.executeUpdate( sMakeTable );
stmt.executeUpdate( sMakeInsert );
ResultSet rs = stmt.executeQuery(sMakeSelect);
try {
while(rs.next())
{
String sResult = rs.getString("response");
System.out.println(sResult);
}
} finally {
try { rs.close(); } catch (Exception ignore) {}
}
} finally {
try { stmt.close(); } catch (Exception ignore) {}
}
} finally {
try { conn.close(); } catch (Exception ignore) {}
}
}
}
您現在還應該發現工作目錄中有一個名為 _hello.db_ 的檔案(或者您在 URL 的資料庫名稱元件中為其命名的任何其他名稱)。如果您嘗試多次執行此程式碼,您將收到一個 SQL 異常錯誤,因為您將嘗試建立一個已存在的表;您可以刪除 .db 檔案,或者使用 SQLite 刪除該表,或者在嘗試建立表之前,在其中插入一個包含刪除表語句的新字串,並使用 stmt.executeUpdate 執行刪除字串...