Hello,
I am new to this mailinglist. I think I have to send my question here. My
Name is Michael and I come from Germany. At the moment I develope a few
android apps for my study.
Is it possbile to get the size of one stored row inside my sqlite database?
I tried the following, but it returns different sizes every time. But my
test data is the same so I think it should have the same size.
public long getObjectSize(MyData data)
{
if(getSize() == 0)
//because i don't want to divide by zero
{
insertOneFakeData(data);
}
long vorvorherdatasize = getDataSize();
long checkdatasize;
do
//this is for writing till the end of the current block size
{
insertOneFakeData(data);
checkdatasize = getDataSize();
}while(checkdatasize == vorvorherdatasize);
//dataSize changed, so size-1 should be the number ob rows stored in
the old size.
long vorhersize = getSize()-1;
//number of elements before next write
long vorherdatasize = getDataSize();
//Size of the file before next write
do
{
insertOneFakeData(data);
checkdatasize = getDataSize();
}while(checkdatasize == vorherdatasize);
long nachherdatasize = checkdatasize;
long nachhersize = getSize()-1;
//number of rows before new block was reserved
long size = nachhersize - vorhersize;
//number of elements in the last block
long datasize = vorherdatasize - vorvorherdatasize;
//datasize oft he last block
long objectSize = datasize / size; //my
try to get the size of 1 row
return objectSize;
}
Only for completeness my other used methods:
public long getDataSize() //returns size of file in which my database is
stored
{
SQLiteDatabase db = this.getWritableDatabase();
db.getPath();
long size = new File(db.getPath()).length();
return size;
}
public long getSize() //returns number of rows in my database
{
Log.i("ESmartDataManager","getSize");
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT "
+ _ID + ", "
+ CANID + ", "
+ RTR +", "
+ IDE + ", "
+ DLC + ", "
+ TIMESTAMP + ", "
+ DATA
+ " FROM "
+ FAKETABLE_NAME , null);
return cursor.getCount();
}
Can you help me to get the size of 1 row? Is it possible?