SQLException: no such table

nun habe ich einige Probleme mit der Verbindung zu meiner Datenbank. Ich kenne die Tabellen, die ich Suche, existieren, weil, wenn ich auf Sie zugreifen mit dem Befehl Linie, die Sie abgefragt werden können.

Wahrscheinlich einige kleinere Aufsicht, aber ich würde gerne etwas Hilfe.

Dies ist, wo ich meine Verbindung zu meiner Datenbank
package Persistenz;

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


public class DBRegistry {

    private static DBRegistry db = null;
    private static Connection connection = null;

    private DBRegistry() {};

    public static synchronized DBRegistry getUniqueInstance() {
        if (db == null) {
                db = new DBRegistry();
                return db;
        }
        else return db;
    }

    public synchronized Connection getDBConnection() {
            try {
                Class.forName("org.sqlite.JDBC");
                connection = DriverManager.getConnection("jdbc:sqlite:src/database/taskMan.db");
                return connection;
            } 
            catch (SQLException e) {e.printStackTrace();} 
            catch (ClassNotFoundException e) {e.printStackTrace();}
            return null;
    }

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

Hier ist, wie ich Abfrage, es

public void create(UUID oid, Object obj) {
    Task t = (Task)obj;
    String statement = "INSERT INTO `complexTask` (`oid`,`description`,`status`) VALUES (?, ?, ?)";
    try {
        PreparedStatement dbStatement = db.prepareStatement(statement);
        dbStatement.setString(1, oid.toString());
        dbStatement.setString(2, t.getDescription());
        dbStatement.setBoolean(3, t.getStatus());
        dbStatement.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

schließlich ein stack trace:

java.sql.SQLException: no such table: complexTask
    at org.sqlite.DB.throwex(DB.java:288)
    at org.sqlite.NativeDB.prepare(Native Method)
    at org.sqlite.DB.prepare(DB.java:114)
    at org.sqlite.PrepStmt.<init>(PrepStmt.java:37)
    at org.sqlite.Conn.prepareStatement(Conn.java:231)
    at org.sqlite.Conn.prepareStatement(Conn.java:224)
    at org.sqlite.Conn.prepareStatement(Conn.java:213)
    at persistence.framework.ComplexTaskRDBMapper.create(ComplexTaskRDBMapper.java:23)
    at persistence.PersistanceFacade.create(PersistanceFacade.java:49)
    at persistence.persistanceStates.NewState.commit(NewState.java:10)
    at persistence.PersistentObject.commit(PersistentObject.java:23)
    at domain.objects.Task.commitToDB(Task.java:89)
    at domain.TaskRepository.commitToDB(TaskRepository.java:60)
    at domain.TaskController.persistanceCommit(TaskController.java:97)
    at presentation.TaskControlsJPanel$3.actionPerformed(TaskControlsJPanel.java:127)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
    at java.awt.Component.processMouseEvent(Component.java:6175)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:5940)
    at java.awt.Container.processEvent(Container.java:2105)
    at java.awt.Component.dispatchEventImpl(Component.java:4536)
    at java.awt.Container.dispatchEventImpl(Container.java:2163)
    at java.awt.Component.dispatchEvent(Component.java:4362)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
    at java.awt.Container.dispatchEventImpl(Container.java:2149)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4362)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Und einige JUnit-code für eine gute Maßnahme, der erste test ist erfolgreich und der zweite schlägt mit einem ähnlichen Fehler zu dem oben genannten

package test.persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import persistence.DBRegistry;
import junit.framework.TestCase;

public class TestDBRegistry extends TestCase {

    public void testDBRegistryConnection() {
        Connection con =  DBRegistry.getUniqueInstance().getDBConnection();
        assertNotNull(con);
    }

    public void testTableQuery() throws SQLException {
        Connection con =  DBRegistry.getUniqueInstance().getDBConnection();
        PreparedStatement dbStatement = con.prepareStatement("SELECT COUNT(*) FROM `singleTask`");
        assertEquals("should be 1 for successful query", 1, dbStatement.executeQuery());
    }
Ich Frage mich, ob der Pfad zu der Datenbank nicht richtig eingestellt ist, aber dann gewundert, wenn das hätte th ersten unit test fehlschlagen.
versuchen DBNAME.singleTask als ein Schuss sollte es funktionieren .
gleiche Problem 🙁
versuchen Sie, die gleiche DB mit einigen anderen front-end-überprüfen der Tabellen
Ich habe versucht die Befehlszeile verwenden, und es funktionierte! ben@ben-laptop:~/workspace/taskManager_v4/src/Datenbank$ sqlite taskManDb.db SQLite version 2.8.17 Enter ".help" for instructions sqlite> .Tabellen complexTask repeatingTask singleTask Teilaufgabe

InformationsquelleAutor Bnjmn | 2010-12-18

Schreibe einen Kommentar