views:

46

answers:

1

Hey all

I'm having a go at developing my first android application and have never really used databases before. Anyways I need to populate and update a database based on XML files retrieved from the web on a regular basis (say once a day).

Just thinking about it iv already run into some problems...Basically I need to display information about artists and events ordered by date. For this I plan on backing the view by the sqlite database which already has each row sorted by date. So the columns would be "date", "artist", "venue", etc. and I'm thinking I would need a "row ID" column as well as a primary key?

Now the idea I have is to do an insertion sort so that whenever I'm inserting an entry into the database it will be in order and seem fairly simple to implement. I'm basing my DB Helper class from the notepad example here http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html (NotesDbAdapter). But the way they insert new items is by using ContentValues and it just gets inserted as the next item in the database. How would I insert items somewhere in the middle so that it is in order by date? Or is it better to have the database unordered and just order it outside the database when needed?

Also basically I want to download the XML file from say last.fm once a day and then put any new entry into the database...what is the best way to do this? Would rebuilding the database be the way to go?

Thanks

+1  A: 

I definitely wouldn't worry about insertion order. You can add an orderBy field to a query so that the database orders the results.

Cursor c = db.query("CONCERTS", new String[]{"venue", "artist", "date"},
     null, null, null, null, "date"/*orderBy*/);

Also. How big are these files? It might be easier just to download the xml each time and not worry about storing in a database.

BrennaSoft
ahhh I see thank!And the xml file would probably be around 500-1000 lines...should I just download the xml each time?Things that may be a problem without a database: - when a user 'likes' an event, etc. and I want this to be persistent wouldn't I need to use a database? :S- If I'm using multiple xml files? (ie. from two different websites) and only want to display unique ones and what not?
Kman
If they like something are you sending it back to the server so that other users can see that someone else liked an event? If you want to share the data this way I see no real benefit in persisting the data in a database.
BrennaSoft
Well first I thought i would not worry about sending any data back to server (that is just use last.fm to retrieve data about concerts) and have the user 'like' or 'attending' a concert and have that indicated in their calender (and the app) or something. And then later on have full last.fm integration so that data is sent back to server...so I guess I shouldn't worry about the database
Kman
and whats a good approach to parse the xml on android (for a noob)?Thanks!
Kman
That's a whole nother question but if last.fm supports json as the format, you should use that because it is easier to process.
BrennaSoft
ohh ok sure thing ill look into that...now back to the question the feeds provide alot of information (ie. links to images, geo points, etc.) which will not be used in the main view and only when the user clicks on one of the items is it displayed. Would a database be required there or is it sufficient to load everything in memory and just display it when necessary (and download image data, etc. when necessary)?
Kman