0

私は 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環境変数に設定しました。

4

1 に答える 1