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 运行删除字符串...