2009-10-06 2 views
39

Я использую один простой код для доступа к базе данных SQLite из приложения Java. Мой кодКак подключить SQLite к Java?

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
public class ConnectSQLite 
{ 
    public static void main(String[] args) 
    { 
    Connection connection = null; 
    ResultSet resultSet = null; 
    Statement statement = null; 

    try 
    { 
     Class.forName("org.sqlite.JDBC"); 
     connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db"); 
     statement = connection.createStatement(); 
     resultSet = statement 
       .executeQuery("SELECT EMPNAME FROM EMPLOYEEDETAILS"); 
     while (resultSet.next()) 
     { 
      System.out.println("EMPLOYEE NAME:" 
        + resultSet.getString("EMPNAME")); 
     } 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try 
     { 
      resultSet.close(); 
      statement.close(); 
      connection.close(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
} 

Но этот код дает одно исключение, как

java.lang.ClassNotFoundException: org.sqlite.JDBC 

Как SLOVE это, пожалуйста, помогите мне.

+5

Я предполагаю, что вы не помещаете SQLite jar в classpath – vpram86

ответ

53

Вам необходимо иметь SQLite JDBC-драйвер в вашем пути к классам.

Taro L. Saito (xerial) разветвил проект Zentus и теперь поддерживает его под именем sqlite-jdbc. Он объединяет родные драйверы для основных платформ, поэтому вам не нужно настраивать их отдельно.

+0

Я использую этот драйвер и отлично работает. Но почему он не уплотняет базу данных при создании. С помощью FireFox sqlite plugin Database сжимается с 11,5 МБ до 11,3 МБ. как это сделать с помощью java. –

+0

@Dyapa Вам нужно периодически запускать 'VACUUM'; поскольку JDBC на самом деле не интерпретирует SQL (по уважительным причинам), просто отправьте его. Или используйте прагму для каждого соединения, чтобы работать в режиме автоматического вакуумирования. –

+0

@ DonalFellows может объяснить, как запустить VACUUM через java. –

8

Если вы используете NetBeans Скачать sqlitejdbc driver правой кнопкой мыши папку Libraries из окна Project и выберите Add Library, затем нажмите на кнопку Создать, введите имя библиотеки (SQLite) и нажмите OK

У вас есть чтобы добавить драйвер sqlitejdbc в путь к классу, нажмите кнопку «Добавить Jar/Folder ..» и выберите файл sqlitejdbc, который вы загрузили ранее. Нажмите «ОК», и вы готовы к работе!

+0

Я много боролся из-за этой проблемы. Я новичок в Java и использую Netbeans. Это было разочарование. Наконец, ваш ответ спас мой день. – Indigo

5

Я использую Eclipse, и я скопировал ваш код и получил ту же ошибку. Затем я открыл свойства проекта -> Java Build Path -> Libraries-> Add External JARs ... c: \ jrun4 \ lib \ sqlitejdbc-v056.jar Работал как шарм. Возможно, вам придется перезагрузить веб-сервер, если вы только что скопировали файл .jar.

1
connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db"); 

Вместо этого поместить

connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb"); 
1

Эй я разместил видео-учебник на YouTube об этом, вы можете проверить, что и вы можете найти здесь пример кода:

http://myfundatimemachine.blogspot.in/2012/06/database-connection-to-java-application.html

+0

Его много нерелевантного кода, чтобы узнать об относительно конкретной проблеме. Не сказать его плохое видео/код, но не конкретный для этой проблемы. –

0
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import javax.swing.JOptionPane; 


public class Connectdatabase { 

     Connection con = null; 

     public static Connection ConnecrDb(){ 

      try{ 
       //String dir = System.getProperty("user.dir"); 
       Class.forName("org.sqlite.JDBC"); 
       Connection con = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db"); 
       return con; 
      } 
      catch(ClassNotFoundException | SQLException e){ 
       JOptionPane.showMessageDialog(null,"Problem with connection of database"); 
       return null; 
      } 
     } 

    } 
3
import java.sql.ResultSet; 
    import java.sql.SQLException; 
    import javax.swing.JOptionPane; 
    import org.sqlite.SQLiteDataSource; 
    import org.sqlite.SQLiteJDBCLoader; 

    public class Test { 

     public static final boolean Connected() { 
      boolean initialize = SQLiteJDBCLoader.initialize(); 

      SQLiteDataSource dataSource = new SQLiteDataSource(); 
      dataSource.setUrl("jdbc:sqlite:/home/users.sqlite"); 
      int i=0; 
      try { 
       ResultSet executeQuery = dataSource.getConnection() 
         .createStatement().executeQuery("select * from \"Table\""); 
       while (executeQuery.next()) { 
i++; 
        System.out.println("out: "+executeQuery.getMetaData().getColumnLabel(i)); 

       } 



      } catch (SQLException ex) { 
       JOptionPane.showMessageDialog(null, ex); 
      } 

      return initialize; 

     } 
+0

Я использовал 'dataSource.setDatabaseName (...)', и он не работал. Теперь я вижу, что мне нужно использовать 'dataSource.setUrl (...)'. Благодарю. :-) – kmort

7

Если вы используете Netbeans с помощью Maven, добавьте библиотеку проще. Я попытался использовать вышеупомянутые решения, но это не сработало.

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

Я добавил Maven зависимости и java.lang.ClassNotFoundException: org.sqlite.JDBC ошибки ушла.

1

Вам необходимо загрузить и добавить SQLite JDBC-драйвер в свой путь к классам.
Вы можете скачать здесь https://bitbucket.org/xerial/sqlite-jdbc/downloads

Если вы используете Gradle, вы будете иметь только добавить зависимость SQLite:

dependencies { 
    compile 'org.xerial:sqlite-jdbc:3.8.11.2' 
} 

Следующая вещь, которую вы должны сделать, это инициализировать драйвер:

try { 
    Class.forName("org.sqlite.JDBC"); 
} catch (ClassNotFoundException eString) { 
    System.err.println("Could not init JDBC driver - driver not found"); 
} 
Смежные вопросы