29

誰かが私を助けてくれることを願っています。SQLite データベースに接続する単純なアプリケーションに取り組んでいます。以下は私の接続コードです:

try {           
  Connection con = DriverManager.getConnection("jdbc:sqlite:myDB.sqlite");
  PreparedStatement pstm = con.prepareStatement("insert into hell(username,pssword) " +
"values ('"+tfUname.getText()+"','"+tfUpass.getText()+"')");

  pstm.close();
  con.close();
  JOptionPane.showMessageDialog(null,"Congrats, you have been registered succesfully");
  RegisterWindow rw = new RegisterWindow();
  rw.setVisible(false);
  pack();
  dispose();
} catch(SQLException ex) {
  setTitle(ex.toString());
}

これは、データベースにユーザー名とパスワードをロードするための単なるウィンドウです。私が抱えている問題は、ボタンをクリックすると次の例外が表示されることです。

"java.sql.SQLException: No suitable driver found for jdbc:sqlite:C\\LoginJava2\\myDB.sqlite" 

(JavaでSQLiteデータベースに接続する方法の例を見つけました。見つけた例はうまく機能します)

このプログラムは、ウィンドウ ビルダー (Eclipse) で実行しています。私が見つけた例で使用しているものと同じドライバーを使用しています。別のドライバーを使用する必要があるかどうかはわかりません。実際、別のドライバーで試してみましたが、そのメッセージがまだ表示されます。

4

6 に答える 6

48

クラスパスに、sqlite クラスとドライバーを含む jar がありません。sqlite-jdbc-3.7.2.jarまたは該当するバージョンのようなものが必要です。

jar が存在することが確実な場合は、接続を作成する前に次のコード行を追加してみてください。

Class.forName("org.sqlite.JDBC");
于 2013-05-23T23:14:46.937 に答える
14

私は同じ問題を抱えています。私はMavenを使用し、依存関係を追加しました:

    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.15.1
        </version>
    </dependency>

それはコンパイルでき、私は得ました:

jdbc:sqlite:xx.db に適したドライバーが見つかりません

クラスパスを確認したところ、sqlite-jdbc-3.15.1.jar が存在することが確認されました。何らかの理由でクラスがロードされなかったと思いますが、理由はわかりません。だから私は追加しました

Class.forName("org.sqlite.JDBC");

私のコードの冒頭に。出来た!

そして、上の行を削除します。それはまだ動作します!プロジェクトをクリーンアップして再構築しました。これ以上 Class.forName() は必要ありません!!! 理由はまだわかりません。しかし、問題は解決しました。Class.forName() 必要なクラスがクラスパスにあるかどうかを診断するために使用できると思います。

于 2016-12-09T01:55:25.903 に答える