Domanda

Sto usando un jdbc: sqlite per accedere a un db SQLite e ottenere alcuni record con una semplice dichiarazione prescelta. Ci sono righe nel database, ma la funzione ritorna java nulla.

   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 ;
    }
}

Utilizzando l'istruzione SQL direttamente sulle opere di database. Uno sto usando Razor SQL per visualizzare l'db se questo fa alcuna differenza.

È stato utile?

Soluzione

Si chiude il ResultSet in GetData, quindi dai tentativi tempo GetStopBS per caricarlo nella struttura di dati il ??cursore non è disponibile.

mi piacerebbe riscrivere il codice per farlo correttamente. Sei vicino, ma non c'è.

Impara i standard di codifica Sun. Stai seguendo gli standard .NET, non Java.

Il tuo cuore è nel posto giusto quando si chiude la sua dichiarazione, set di risultati, e la connessione, ma non sono d'accordo con cui si inserisce il codice. Mi consiglia di non passare i riferimenti pacchetto java.sql fuori del metodo di applicazione in cui sono stati creati. Crearli, usarli, e chiuderli con lo stesso metodo.

Si dovrebbe anche loro vicino in un blocco finally, avvolgendo la stretta nel tentativo individuale / blocchi catch.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top