jdbc:sqlite没有检索数据

时间:2011-04-27 10:24:57

标签: java sqlite sqlitejdbc

我正在使用jdbc:sqlite访问sqlite数据库并使用简单的select语句获取一些记录。数据库中有行但java函数不返回任何内容。

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

直接在数据库上使用sql语句。我正在使用Razor sql查看数据库,如果这有任何区别。

1 个答案:

答案 0 :(得分:1)

您关闭ResultSet中的GetData,因此当GetStopBS尝试将其加载到数据结构中时,光标不可用。

我会重写此代码以正确执行此操作。你很亲密,但不在那里。

了解Sun编码标准。您遵循.NET标准,而不是Java。

当您关闭语句,结果集和连接时,您的心脏在正确的位置,但我不同意您放置代码的位置。我建议永远不要将java.sql包引用传递出创建它们的方法范围。创建它们,使用它们,然后以相同的方法关闭它们。

您还应该在finally块中关闭它们,将关闭包装在单独的try / catch块中。