0

我发现这个例子可以连接 SQLite 数据库:

 try{

         Class.forName("org.sqlite.JDBC");
         connection = DriverManager.getConnection("jdbc:sqlite:C:\\pruebaSQLite\\dbTest.sqlite");
         System.out.println("Conectado a la base de datos SQLite "); 
      }catch(Exception e){
         System.out.println(e);
      }

它工作正常,但我尝试使用它连接一个 JAVA 应用程序,如下所示:

try {

                        Class.forName("org.sqlite.JDBC");
                        Connection con = DriverManager.getConnection("jdbc:sqlite:C:\\LoginJava2\\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());
                    }

行:“ Class.forName("org.sqlite.JDBC");”给我下一个错误:

Unhandled exception type ClassNotFoundException

如果我删除该行,程序运行正常,但是当我执行操作时,它给了我下一个异常:

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

这很奇怪,因为我在两个示例中都使用了同一个 jar。

我正在使用下一个 jar 文件:“ sqlitejdbc-v056

如果有人可以帮助我如何修复“行 Class.forName("org.sqlite.JDBC");”中的错误 或者如果我在 URL 连接中做错了什么......我会感激的!

谢谢和对不起我的英语!!

4

2 回答 2

0

如果有人帮助我如何修复“行 Class.forName("org.sqlite.JDBC");”中的错误 或者如果我在 URL 连接中做错了什么......我会感激的!

错误消息准确地告诉您需要修复什么——您需要处理它提到的异常 ClassNotFoundException。

您应该注意的主要事情是,您的两个代码示例中的 catch 块是不同的,一个有效而另一个无效。请注意,我不建议您使用第一个 catch 块,即捕获异常的块,即使它有效,因为捕获所有异常通常不是一个好主意,并且会阻止应该渗透到更高级别的异常这样做。相反,您应该捕获需要捕获的显式异常,这里是 SQLException 和 ClassNotFoundException。

异常教程应该通过代码示例帮助您更全面地解释这一点。您如何捕捉到这一点也取决于您使用的是 Java 1.7 还是之前的版本。

于 2013-05-22T21:15:58.067 回答
0

为了解决这个问题,我在代码旁边添加了:

尝试 {

                    Class.forName("org.sqlite.JDBC");
                    Connection con = DriverManager.getConnection("jdbc:sqlite:C:\\LoginJava2\\myDB.sqlite");
                    Statement com = con.createStatement();
                    com.executeUpdate("insert into hell(username,pssword) " +
                            "values ('"+tfUname.getText()+"','"+tfUpass.getText()+"')");
                    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());
                } 

catch(ClassNotFoundException e) { // 我添加了这个 catch 来处理异常

                    setTitle(e.toString());
                }
于 2013-05-28T15:10:01.913 回答