Frage

Ich verwende einen JDBC: SQLite, um auf eine SQLite -DB zuzugreifen und einige Datensätze mit einer einfachen Auswahlanweisung zu erhalten. Es gibt Zeilen in der Datenbank, aber die Java -Funktion gibt nichts zurück.

   private static String ConnectionString = "jdbc:sqlite:D:\\My Documents\\NetBeansProjects\\IntelligentBusStop\\BusSystem.db";

private static ResultSet GetData(String command)
{
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    try
    {
        Class.forName("org.sqlite.JDBC");
        connection = DriverManager.getConnection(ConnectionString);
        statement = connection.createStatement();
        resultSet = statement.executeQuery(command);
        return resultSet;
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return null;
    }
    finally
    {
        try
        {
            resultSet.close();
            statement.close();
            connection.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
 public static ArrayList<StopBS> GetStopBS()
{
    ResultSet results = GetData("Select StopNumber, Tag, Latitude, Longitude FROM StopTable ");
    ArrayList<StopBS> stops = new ArrayList<StopBS>();
    try
    {
        while (results.next())
        {
            StopBS newStop = new StopBS();
            newStop.StopNumber = results.getInt("StopNumber");
            newStop.Tag = results.getString("Tag");
            newStop.Lat = results.getFloat("Latitude");
            newStop.Long =  results.getFloat("Longitude");
            stops.add(newStop);
        }
        return stops;
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return null ;
    }
}

Verwenden der SQL -Anweisung direkt in der Datenbank funktioniert. Ich benutze Razor SQL, um den DB anzuzeigen, wenn dies einen Unterschied macht.

War es hilfreich?

Lösung

Du schließt deine ResultSet in GetData, Also zu der Zeit GetStopBS Versucht, es in die Datenstruktur zu laden, die der Cursor nicht verfügbar ist.

Ich würde diesen Code umschreiben, um es richtig zu machen. Du bist nah, aber nicht da.

Lernen Sie die Sonnencodierungsstandards. Sie folgen .NET -Standards, nicht Java.

Ihr Herz ist am richtigen Ort, wenn Sie Ihre Aussage, Ihre Ergebnismenge und Ihre Verbindung schließen, aber ich bin nicht einverstanden damit, wo Sie den Code einfügen. Ich empfehle, Java.sql -Paketreferenzen niemals aus dem Methodenbereich herauszugeben, in dem sie erstellt wurden. Erstellen Sie sie, verwenden Sie sie und schließen Sie sie in derselben Methode.

Sie sollten sie auch in einem endgültigen Block schließen und das Schließen in den einzelnen Versuchs-/Fangblöcken einwickeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top