2010-12-20 9 views
0

新しい行でSQLiteデータベースを更新しようとしています。問題は、データベースを開くと、その中のすべての行を削除するようです。ここに私のコードは次のとおりです。私の二つの出力文でAndroid:既存のデータベースを開くときにすべての行を削除するSQLiteデータベース

String sdPath = Environment.getExternalStorageDirectory() + "/myApp"; 
    String databasePath = sdPath + "/myApp.db"; 
    File file = new File(databasePath); 

    if(file.exists()) 
    { 
     Log.w(getClass().getSimpleName() , "myApp Database size: " + file.length()); 
     database = SQLiteDatabase.openOrCreateDatabase(file, null); 
     Log.w(getClass().getSimpleName() , "myApp Database size: " + file.length()); 
     Log.w(getClass().getSimpleName() , "myApp Database opened"); 
    } 
    else 
    { 
     File directory = new File(sdPath); 
     directory.mkdir(); 
     Log.w(getClass().getSimpleName() , "Creating myApp Database"); 
     database = SQLiteDatabase.openOrCreateDatabase(file, null); 
     Log.w(getClass().getSimpleName() , "myApp Database opened"); 
     database.execSQL(DATABASE_CREATE_TABLE_OBJECT); 
     database.execSQL(DATABASE_CREATE_TABLE_ZONE); 
     database.execSQL(DATABASE_CREATE_TABLE_OBJECT_ZONE); 
     database.execSQL(DATABASE_CREATE_TABLE_POINT); 
     database.execSQL(DATABASE_CREATE_INDEX_POINT); 
     database.execSQL(DATABASE_CREATE_INDEX_ZONE); 
    } 

、最初はそれを開く前に、私のファイルのサイズを伝え、その後、開封後、ファイルサイズは常に約13キロバイトに戻ります。私は間違って何をしていますか?

編集:私はおそらく

private File myAppDir = null; 
private File databaseFile = null; 

... 

// Automatically creates /mnt/sdcard/.../myApp folder if it doesn't already exist 
if (myAppDir == null) 
    myAppDir = new File(getExternalFilesDir(null).getAbsolutePath()); 

if (databaseFile == null) 
    databaseFile = new File(myAppDir, "/myApp.db"); 

...私は7

+2

あなたのfile.existsブロックは実行されていて、elseブロックではありませんか? – Tim

+0

両方のブロックで出力されたログメッセージに基づいて、はい。 – Ogre

答えて

0

が...これにより

String sdPath = Environment.getExternalStorageDirectory() + "/myApp"; 
    String databasePath = sdPath + "/myApp.db"; 
    File file = new File(databasePath); 

これを元に戻し、このもAndroidのAPIレベルを書いていることを言及する必要がありますif/elseコードでこれを使用してください。

if (databaseFile.exists()) 
{ 
    ... 
} 
else 
{ 
    ... 
} 

しかし「他の」ブロックから次の2行を削除...

File directory = new File(sdPath); 
directory.mkdir(); 
+0

私はすでにやっていたことと実際にどのように違うのか分かりませんでしたが、私はこれを試しました。残念ながら、私はまだ同じ問題を抱えています。とにかくおかげで。 – Ogre

0

ああ親愛なる、私が最初にデータベースを作成するときに、私は私の取引に愚かな何かをしたようです。彼らはネスティングを始めましたが、すべてが閉じられるわけではありませんでした。それは私のループを正しく使用しないように教えてくれるでしょう。

関連する問題