1

私は非常に珍しい問題を抱えています。

単純なデータベースを作成しようとしています (6 つのテーブルのうち、4 つのテーブルには 2 つの列しかありません)。以前のプロジェクトで使用した社内データベース ライブラリを使用していますが、機能します。

しかし、私の現在のプロジェクトでは時折バグがあります。基本的に、データベースは正しく作成されていません。SDカードに追加されますが、アクセスするとDatabaseException.

デスクトップ マネージャーからデバイスにアクセスし、(SQLite Database Browser v2.0b1 を使用して) データベースを開こうとすると、「ファイルは SQLite 3 データベースではありません」というメッセージが表示されます。

更新
SDカードからデータベースを手動で削除すると、これが発生することがわかりました。ユーザーがそれを行うのを止める方法がないので、それを処理するために私にできることはありますか?

コード

public static boolean initialize()
{
    boolean memory_card_available = ApplicationInterface.isSDCardIn();
    String application_name = ApplicationInterface.getApplicationName();
    if (memory_card_available == true)
    {
        file_path = "file:///SDCard/" + application_name + ".db";
    }
    else
    {
        file_path = "file:///store/" + application_name + ".db";
    }

    try
    {
        uri = URI.create(file_path);
        FileClass.hideFile(file_path);
    } catch (MalformedURIException mue)
    {
    }

    return create(uri);
}

private static boolean create(URI db_file)
{
    boolean response = false;

    try
    {
        db = DatabaseFactory.create(db_file);
        db.close();

        response = true;
    } catch (Exception e)
    {
    }

    return response;
}
4

2 に答える 2

2

私の唯一の提案は、アセットにデフォルトのデータベースを保持することです。SD カードのデータベースに問題がある場合は、デフォルトのデータベースをコピーして再作成してみてください。

私が期待するあまり良い答えではありません。

于 2013-08-08T15:41:11.387 に答える