我正在使用 Eclipse(在 Windows 8.1 上运行)并希望访问 sqlite 数据库。遗憾的是,即使我在 CLASSPATH 环境变量中定义了它的位置,我也无法使用该驱动程序。以下程序来自一千个教程站点之一:
package sqliteconnectiontest;
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 test {
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
System.out.println(sDbUrl);
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) {
}
}
}
}
我已经从http://www.xerial.org/maven/repository/artifact/org/xerial/sqlite-jdbc/3.7.2/下载了 sqlite-jdbc-3.7.2.jar 驱动程序
驱动程序位于:
B:\sqlite-jdbc-3.7.2.jar
我的 .class 文件:
B:\Progs\Java\sqlconnectiontest\bin\sqliteconnectiontest\test.class
CLASSPATH 环境变量:
CLASSPATH=B:\sqlite-jdbc-3.7.2.jar;
当我尝试执行程序时,会抛出此异常:
Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at sqliteconnectiontest.test.main(test.java:14)
从我在互联网上发现的情况来看,这个问题应该意味着找不到 JDBC 驱动程序,尽管我将它的方向放在 CLASSPATH 环境变量上。