JFrame в Eclipse с SQLite

Я нашел этот пример для подключения к базе данных 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: "sqlitejdbc-v056"

если бы кто-нибудь мог мне помочь, как исправить ошибку в «строке Class.forName (« org.sqlite.JDBC »);» или если я что-то делаю не так с URL-адресом ... Я буду признателен !!

Спасибо и извините за мой английский !!


person Fenrir86    schedule 22.05.2013    source источник
comment
Есть ли библиотека sqlLite .jar в вашем пути к классам?   -  person Barranka    schedule 23.05.2013


Ответы (2)


если кто-то clud поможет мне, как исправить ошибку в строке "Class.forName (" org.sqlite.JDBC ");" или если я что-то делаю не так с URL-адресом ... Я буду признателен !!

Сообщение об ошибке сообщает вам, что именно необходимо исправить - вам необходимо обработать упомянутое в нем исключение ClassNotFoundException.

Главное, что вы должны заметить, это то, что блоки catch в ваших двух примерах кода разные, и один работает, а другой нет. Обратите внимание, что я не рекомендую вам использовать первый блок catch, тот, который перехватывает Exception, даже если он работает, поскольку перехват всех исключений обычно не является хорошей идеей и предотвращает от этого исключения, которые должны распространяться на более высокий уровень. Вместо этого вы должны перехватывать явные исключения, которые необходимо перехватывать, здесь SQLException и ClassNotFoundException.

Руководство по исключениям должно помочь вам более полно объяснить это с помощью кода. Примеры. Как вы это поймете, также будет зависеть от того, работаете ли вы с Java 1.7 или более ранними версиями.

person Hovercraft Full Of Eels    schedule 22.05.2013
comment
Хорошо, спасибо ... а что насчет другой ошибки ... Я использую тот же JDBC в обоих примерах и отлично работаю в первом примере !! - person Fenrir86; 23.05.2013
comment
@ user2268094: если ваша проблема связана с опубликованным вами сообщением об ошибке, я объяснил это в своем ответе. Если есть другая проблема, просьба уточнить. - person Hovercraft Full Of Eels; 23.05.2013
comment
Я добавил еще одну ловушку после первой, вот так:} catch (ClassNotFoundException) {... и ошибка исправлена ​​... теперь у меня другая проблема, информация не сохраняется в базе данных !! Вы знаете, почему это происходит !? - person Fenrir86; 24.05.2013

Чтобы решить эту проблему, я добавил следующее к коду:

пытаться {

                    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) {// Я добавил этот улов для обработки исключения

                    setTitle(e.toString());
                }
person Fenrir86    schedule 28.05.2013