Question

J'utilise un jdbc: sqlite pour accéder à un sqlite db et obtenir des enregistrements avec une simple instruction select. Il y a des lignes dans la base de données, mais la fonction retourne java rien.

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

Utilisation de l'instruction SQL directement sur les travaux de base de données. Un j'utilise pour afficher la db si cela fait une différence sql rasoir.

Était-ce utile?

La solution

Vous fermez votre ResultSet en GetData, donc par les essais de GetStopBS de temps pour le charger dans la structure de données, le curseur ne sont pas disponibles.

Je récrire ce code pour le faire correctement. Vous êtes à proximité, mais pas là.

Découvrez les normes de codage Sun. Vous suivez les normes .NET, pas Java.

Votre coeur est au bon endroit lorsque vous fermez votre déclaration, jeu de résultats, et la connexion, mais je suis en désaccord avec l'endroit où vous placez le code. Je ne recommande jamais passer des références de paquet java.sql hors de la portée de la méthode dans laquelle ils ont été créés. les créer, les utiliser et les fermer dans la même méthode.

Vous devriez aussi les près dans un bloc finally, enveloppant la fermeture en individuel try / blocs catch.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top