JDBC: i dati SQLite non il recupero
-
24-10-2019 - |
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.
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.