2016-07-04 95 views
0

大家好,我有這個簡單的java來做,我試圖從eclipse連接到sqlite數據庫,但它根本不起作用。無法從eclipse連接到sqlite?

這裏是我的代碼:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 


public class DatabaseConnection { 

    private String pathDB="C:\\sqlite\\test.db"; 
    private Connection connection=null; 
    private Statement statement=null; 


    public DatabaseConnection(String path){ 
    pathDB= path; 


    } 

public void connect() { 
    try { 
     Class.forName("org.sqlite.JDBC"); 
     connection= DriverManager.getConnection("jdbc:sqlite:" + pathDB); 
     statement= connection.createStatement(); 
     System.out.println("Connection to " + pathDB + " "+ "successful"); 

    } catch (ClassNotFoundException notFoundException) { 
     notFoundException.printStackTrace(); 
     System.out.println("Connection Error!"); 

    } catch (SQLException sqlException) { 

     sqlException.printStackTrace(); 
     System.out.println("Connection Error!"); 
    } 

    String query="Insert into Identity values(0,'issam','[email protected]')"; 
    try { 
     statement.executeUpdate(query); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    } 

public void close() { 
    try { 
     connection.close(); 
     statement.close(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

和主類:

public class Main { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     DatabaseConnection connection= new DatabaseConnection("test.db"); 
     connection.connect(); 
     connection.close(); 



    } 

} 

所以我有這樣的SQLite數據庫,但每當我運行的代碼,它總是給我:連接到「路徑」是成功的,無論我把什麼道路...

我想我已經做了一切正常,我下載了sqlite JDBC文件並添加它: enter image description here

我嘗試添加一個新行到數據庫表,但它總是給我:

Connection to test.db successful 
java.sql.SQLException: no such table: Identity 
    at org.sqlite.core.NativeDB.throwex(NativeDB.java:397) 
    at org.sqlite.core.NativeDB._exec(Native Method) 
    at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:116) 
    at com.issam.iamcore.DatabaseConnection.connect(DatabaseConnection.java:41) 
    at com.issam.iamcore.Main.main(Main.java:10) 
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (Connection is closed) 
    at org.sqlite.core.DB.newSQLException(DB.java:890) 
    at org.sqlite.core.CoreStatement.internalClose(CoreStatement.java:109) 
    at org.sqlite.jdbc3.JDBC3Statement.close(JDBC3Statement.java:35) 
    at com.issam.iamcore.DatabaseConnection.close(DatabaseConnection.java:63) 
    at com.issam.iamcore.Main.main(Main.java:11) 

任何幫助將appreeciated,謝謝!

回答

0

您已成功連接到數據庫,但在執行插入查詢之前沒有創建表Identity,因爲它的堆棧跟蹤說:

String createQuery = "CREATE TABLE Identity (id INT PRIMARY KEY NOT NULL, name TEXT, email TEXT)"; 
statement.executeUpdate(createQuery); 
:插入行之前

Connection to test.db successful 
java.sql.SQLException: no such table: Identity 

調用此

+0

我不認爲問題在這裏。我總是得到成功的連接消息,無論我放哪個路徑,所以一定有問題。我有在數據庫中創建的身份表。 編輯:當我嘗試這個,我得到:「表身份已經存在」和「唯一約束失敗:身份.id」 – Issam

+0

這是一個正常的行爲,當你獲得成功的連接消息,因爲SQLite創建文件,如果它在路徑上不存在。嘗試不同的路徑,以便SQLite爲您創建一個新文件,然後嘗試創建表並重新插入行。 – mvantroba

+0

我不認爲你明白我的觀點。該路徑通常用於顯示數據庫文件的位置,以便它可以連接到它,如果我給出一個隨機路徑,那麼不會有任何文件和連接通常不會成功。我只是嘗試另一條路徑,它沒有創建任何文件,我仍然得到「身份表已存在」消息。 – Issam