0

jdbc:sqlite を使用して sqlite db にアクセスし、単純な 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を使用してdbを表示しています。

4

1 に答える 1

1

ResultSetinGetDataを閉じるGetStopBSと、データ構造にロードしようとするまでにカーソルが使用できなくなります。

このコードを書き直して、適切に実行します。あなたは近くにいますが、そこにはいません。

Sun のコーディング標準について学びます。Java ではなく、.NET 標準に従っています。

ステートメント、結果セット、および接続を閉じると、あなたの心は正しい場所にありますが、コードを配置する場所には同意しません。java.sql パッケージ参照を、それらが作成されたメソッド スコープ外に決して渡さないことをお勧めします。それらを作成し、使用し、同じ方法で閉じます。

また、finally ブロックでそれらを閉じ、個々の try/catch ブロックで閉じる必要があります。

于 2011-04-27T10:31:50.177 に答える