私は Eclipse (Windows 8.1 で実行) を使用しており、sqlite データベースにアクセスしたいと考えています。悲しいことに、ドライバーの場所を CLASSPATH 環境変数で定義したにもかかわらず、ドライバーを操作できません。次のプログラムは、千のチュートリアル サイトの 1 つからのものです。
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環境変数に設定しました。