2017-07-28 5 views
2

SQLiteのDBサイズを取得する方法については、多くの記事がありますが、それらのSOの記事で呼び出すのと同じメソッドを持たないSQLite.Netの実装を呼び出すものはありません。 SQLite.Netを使用してAndroidでファイルサイズを取得するために次のコードを使用することはできますか?それは動作するようです。SQLite.Net dbのサイズ

 SQLiteConnection connection; 
     ... 
     // connection implemented in constructor 
     ... 
     public long GetDBSize() 
     { 
      return File.ReadAllBytes(connection.DatabasePath).LongCount(); 
     } 

答えて

3

あなたは、ファイルのサイズ(Lengthプロパティ)を取得するためにFileInfoを使用することができます。

var fileSize = new FileInfo(sdcardDBPath).Length; 

例:

var sdcardDBPath = Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath, "debug.db"); 
var fileInfo = new FileInfo(sdcardDBPath); 
Log.Debug(Constants.TAG, fileInfo.Length.ToString()); 

出力:

[SushiHangover] 161792 

ADB ls -l出力:

adb shell ls -l /mnt/sdcard/Download/debug.db 
-rw-rw---- 1 root sdcard_rw 161792 2017-07-28 17:08 /mnt/sdcard/Download/debug.db 
+0

私は同じ結果を得ますが、何らかの理由であなたの方法と一緒に行きます。どうも! – Helzgate

+0

@Helzgate 'FileInfo'を使うと、あなたの質問のメソッドのようにファイルを実際にメモリにロードすることはないので、FileInfoは速く、メモリには影響しません;-) – SushiHangover

0

SushiHangoverの答えを使用して、私はまた、あなたのテーブルの行数を示しているのGithub上のデモアプリケーションを作成しました。 Found Here

関連する問題