2012-04-22 1 views
4

나는 다음과 같은 라인을 따라 뭔가 일을하려고 오전 :ANDROID하십시오의 SQLiteDatabase에서 개별 테이블의 크기를 찾기

SELECT bytes from user_segments where segment_name = 'TABLE_NAME'; 

내가

mDb = SQLiteDatabase; 
long size = new File(mDb.getPath()).length(); 
하여 전체 데이터베이스의 크기를 얻을 수 있다는 사실을 알고를

안드로이드의 SQLiteDatabase에서 개별 테이블이 얼마나 많은 공간을 차지할 수 있습니까? 응답의 부족에 의해

EDIT--

, 나는 그것을 SQLite는 불가능하다고 생각한다. 현재 테이블의 행 수를 계산하고 주어진 행의 테이블 스키마에 따라 단일 행에 필요한 공간을 계산하는 해킹 방법을 사용하고 있습니다. 각 행의 크기가 (많은 변화에도

SELECT SUM(LENGTH(the_column)) FROM the_table 

이 당신에게 합리적인 견적을 제공 할 수 있습니다 : 당신은 주로 하나의 컬럼에서 바이너리 또는 문자열 데이터를 저장하는 경우

답변

1

, 당신은 집계 쿼리를 사용할 수 있습니다 예를 들어 데이터베이스에 그림을 저장하는 경우). 그러나 각각에 소량의 데이터가있는 열이 많은 경우 행 당 고정 크기를 예측하는 방식이 더 좋습니다.

안드로이드에, 당신처럼 구현할 수있는 다음

그것은 내가 나에게 알려 주시기 바랍니다 바이트 결과 얻을 수있는 방법을 길이 컬럼의 합계를 반환
SQLiteDatabase database = ... // your database 
// you can cache the statement below if you're using it multiple times 
SQLiteStatement byteStatement = database.compileStatement("SELECT SUM(LENGTH(the_column)) FROM the_table"); 
long bytes = byteStatement.simpleQueryForLong(); 
+0

...? –

+0

AFAIK 텍스트 대신 이진 blob로 데이터를 저장하지 않으면 AFAIK SQLite에 바이트 수에 대한 함수가 없습니다. 대부분 영어 텍스트가 있고 UTF-8을 사용하는 경우 바이트 수는 문자 수와 거의 같아야합니다. – Ralf

+0

대단히 고마워 ..... –

관련 문제