I thought our system should be platform independent as much as possible - nope?
I get your point but I'm using SQL Server now, but they might just decide to switch to Postgres or something. I'll try to use common sql queries as much as possible.
That is what you need to decide beforehand. You can't just start writing code and go "Oh it should be platform independent" because your code most probably won't work with MySQL based on the subtle differences between SQL Server and MySQL. You're clearly writing this app in .NET, and AFAIK .NET isn't fully supported on Linux. So you most probably looking at a target market of Windows users. Now the logistical problem of getting something like SQL Express onto the machine the person is working from, or giving them the option to install it etc takes away from the "1-click" install every developer should aim for. Even though it's possible, you'll find scenarios where administrators would like to have 1 central database where people connect their applications to....so there's another question, is this a per PC application or an application to share information within the network/company? Is it an application that can work seamlessly without that central database, for example, if someone takes their laptop home and works on the data? Then you need to consider synchronizing the data and handling clashes of updates when they're connected again etc. Now how to handle the "offline" mode with the laptop not being connected, do you use MS Access/SQL Express or SQLlite as your database platform? Well it depends, if your database on the server is SQL Server, you might want to use SQL Express just for consistency because something you can do in there you can't necessarily do in MS Access or SQLlite.
See? So many questions you have to ask yourself before even beginning to write an application.
You can't be platform independent if you're writing .NET because you'll always need Windows to run it in perfectly (not talking about WINE in Linux)
You can't be platform independent re: the database because that
will take tons of code and hours to perfect. I'm not sure, but if I were your boss and you spend 6 months making the applications "platform independent" then I'd fire you for wasting my time and money.
Is it really what you need?
Do you REALLY need to be platform independent?
Why choose .NET if you want to be platform independent?
Highlighting some of the questions I raised in that one long paragraph, is it really necessary/wanted to do that?
Assuming the database is per PC, nothing fancy and central like I assumed. Assuming it's only Windows PC's, your choices are MS Access, SQL Express and SQLlite.
MS Access falls away immediately in the list of possible options to use, just because if you want your application to scale to something bigger in future, it would be easier to scale a SQL Express database to a fully fledged SQL Server database and change a few connection strings (instead of an application re-write) than it would be to use MS Access. Not to mention the amount of support queries you'll save yourself from answering from people who "accidentally" deletes the MS Access db or the db getting corrupt or locked in use for some reason.
That leaves you with SQL Server and SQLlite.... is your application data intensive? Will it ever scale up? Will it be used in corporate environments where a central database would be required? Would the installation have to be small because people would need to download it or would you ship it with a CD? Is there basic information involved or are there going to be complex data and reports going to have to extracted from this program?
Depending on all of this, your choices are SQL Server Express, or SQLLite. Personally, I'd go for the latter, only because I don't know what your application is for (or the reason why you require it to be "platform independent") and think it will be perfect for a single installation on a PC with minimal resources at hand and won't require an installation of SQL Express to run the basic commands and be able to stored data. I feel it's also a better choice between MS Access & SQLLite as you won't be plagued with endless inconsistencies in SQL syntax and that stupid corruption of the MS Access db that _will_ happen (in my 10+ years in this industry I haven't worked with an MS Access database that DIDNT go corrupt which was left to me to fix... legacy systems FTL)
If you want to be platform independent, and give the user the choice in what database he/she would like to run (for whatever reason, the end user couldn't give 2 ****s what database you'd be running on really, as long as it's seemless and included in the package) then you'd be better off with a Java application capable of switching DB platforms.
Programming is 90% planning and 10% work. You'll most certainly notice this in a couple of years when you're doing 90% work in maintaining **** code/systems written (or even rewriting them) because it wasn't properly planned or thought out.