Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I posted this last night on StackOverflow and was advised to move it over to StackExchange, thank you for taking a moment to look at my question.

I'm developing a project proposal for my final year project at University and as I aim to use programming languages I am currently not too familiar with I'm looking for some guidance - I can't include details of my project but hopefully you will understand what I'm after.

I'm going to be creating an Android application (in Java) and a Windows Application (in C#) that will ideally access, query and update a remotely hosted Database or set of XML files (this would most likely be over the Internet).

I've done some looking around the internet and SQLite seems like a safe-bet for cross-platform manipulation of the database; however I would like to keep the system as lightweight as possible and I'm wondering whether XML files may provide a better alternative? Anyone out there that has experience using SQLite and/or remotely hosted XML for the purposes of Android and/or C# development that could point me in the right direction?

If there is an alternative solution other than those I have mentioned I would be interested to hear about them too.

Thank you for taking the time to read my question.

Edit: The purpose of this application is for a small scale business, the data source would not need to be updated by more than one source but may be view from multiple sources (i.e. through multiple phones and a desktop PC). The database wouldn't be updating masses of data at a time (most likely single rows of a few tables at the most).

share|improve this question
1  
Don't have any of your endpoints talk to your database directly, create some sort of (potentially web) service on the server that interfaces with it. Then you can create your datastores however you want, or even swap them out, without having to worry about your client devices. –  Clockwork-Muse May 1 '12 at 18:38
add comment

2 Answers

If you are planning to develop an application in Android SQLite is the only way to go. In my case I have to include a database which is already populated with information to fill the dropdownlists (can't remember their Android name but I hope you got the meaning). Thus I have to insert data prior to deploy and have to include it. Also using SQLite means you can query database with SQL syntax which is very handy.

Windows Phone, on the other hand, provides Azure platform in addition to SQLite, but the drawback is it is not free and needs an always online device.

A caveat regarding Android is the assets folder, the place where you put additional files to include with the application, has a filesize limit of 1,5 megabytes concerning files other than MP3 or PNGs. You have to rename your db file to PNG or MP3 if you exceed filesize limit and copy it to application (which you have to do if you include it with its db extension) with correct filetype.

share|improve this answer
    
Thank you for your reply, I'll keep this in mind :) –  Andy Mepham Apr 2 '12 at 16:36
2  
Thankfully, the OP isn't hosting the database on a specific phone, but somewhere else. With the creation of a good service (SOAP, RESTful, or just plain XML marshalling), he should be able to talk to whatever he wants, server side. It's almost never a good idea to have a remote client talk to the database directly, if for no other reason than security. –  Clockwork-Muse May 1 '12 at 18:36
add comment

When dealing with data & mobile devices, one of the first question is: "do you need to keep a local (in device) database for offline use or is it OK to ask a server some data everytime you need it?"

If you have to store a copy of your database on each device, having a common RDBMS (SQLite) is going to be a good thing. If the app starts for the first time, just download the db file locally. It will be easy to download it again and upgrade it incrementally with upgrade scripts (shared accross server and clients).

However, you won't be able to use the same code to access your database on both devices. Perhaps you can think of a way to generate the Data Access code in all the languages you need based on your database structure. This may (or may not) save you some time. Generating code with code is always a good experience anyway (see The Pragmatic programmer, rule 29 "Write Code That Writes Code").

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.