So I have an app on the market, and with an update I want to add some columns to the database. No problems so far. But I want to detect if the database in use is missing these columns, and add them if this is the case. I need this to be done dynamically and not just after the update to the new version, because the application is supposed to still be able to import older databases. Normally I would be able to use the PRAGMA query, but Im not sure how to do this with Android. I cant use execSQL since it is a query, and I cant figure out how to use PRAGMA with the query()-function.
Ofcourse I could just catch exceptions and then add the column, or always add the columns to each table before I start to work with it, but that is not a neat solution.
Cheers,
Pragma works. As an example I just tried it on one of my Android App DBs.
sqlite> pragma table_info (userCommand);
cid name type notnull dflt_value pk
0 id INTEGER 0 1
1 description TEXT 0 0
2 message TEXT 0 0
As we can see there are three fields in the specified table. id, description, and message.
So in your app, use something like:
Cursor c = null;
c = RawQuery ("pragma table_info (userCommand)",null);
// if c has records and is not null then iterate through the records in search of your table name.
Please excuse the poor formatting.
This may be overkill, but you can select a single row from your table into a Cursor and use Cursor.getColumnIndex([column name as string]). This will return -1 if it doesn't exist.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With