2016-07-04 47 views
0

こんにちは、私はこの単純なjavaを行うと私は日食から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

あなたがデータベースに正常に接続されているが、それは、スタックトレースに言うように、INSERTクエリを実行する前にテーブル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テーブルを作成しました。 編集:これを試したとき、「テーブルIDが既に存在します」と「UNIQUE制約が失敗しました:Identity.id」 – Issam

+0

正常な接続メッセージが表示されると、SQLiteはファイルを作成するため、パス上に存在しません。別のパスを試してみてください。そうすれば、SQLiteは新しいファイルを作成します。その後、テーブルを作成して再度行を挿入してみてください。 – mvantroba

+0

私はあなたが私のポイントを持っているとは思わない。パスは通常、データベースファイルがどこに接続できるようにするために使用されます。ランダムなパスを指定すると、ファイルや接続が正常に正常に行われません。私は別のパスを入れようとしましたが、ファイルを作成できませんでした。 – Issam

関連する問題