How can I count the number of columns in a table i开发者_C百科n a sqlite database in Android?
A query returns a Cursor
which has methods like getColumnCount()
.
You can use pragma table_info(foo_table)
and count the number of rows returned
Here is the code and it runs perfectly without any error.
public Cursor getAllTitles(){
return db.query(DATABASE_TABLE, new String[] {
KEY_ROWID,KEY_ISBN,KEY_TITLE,KEY_PUBLISHER},
null,null,null,null,null);
}
Now create the following object in onCreate() method to call above getAllTitles() method.
Cursor c = db.getAllTitles();
c.getColumnCount(); //this line will give the number of columns in table.
You can use SELECT count() FROM PRAGMA_TABLE_INFO('your_table');
Reference: https://www.sqlite.org/pragma.html#pragfunc
Here you go!
-(NSInteger)dbFieldCount:(NSString *)dbname
{
NSString *query = [NSString stringWithFormat:@"PRAGMA table_info(%@)",dbname];
const char *query2 = [query UTF8String];
NSInteger nFields =0;
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, query2, -1, &compiledStatement, NULL) == SQLITE_OK)
{
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
nFields++;
}
}
sqlite3_finalize(compiledStatement);
return nFields;
}
精彩评论