views:

122

answers:

7

I am planning on writing and commercialising a C# app which will store data in an underlying database I use MySQL on my environment for my own development and this is what I would have used to write the application for myself (no need to use FK - MyISAM engine would be fine).

I am concerned about how easy it will be to distribute the app together with the database engine. Would using MySQL allow me for easy packaging of the app for a "one-click" install on the client side? (ie I do not want them to have to install MySQL by themselves) and also is it feasible from a licensing point of view?

Are there other Database systems which would make the process more straight-forward

+4  A: 

Sqlite is very simple. You just deploy the DLL with your app. I can't tell how appropriate it is for your situation, given the lack of info.

RedFilter
+1 I have no other option than to agree! =P I was writing the same at about the same time!
Will Marcouiller
+2  A: 

I think SQLite could do the trick, as it is a filesystem-based database, so no installation required.

Access could also do the trick, and most of businesses have it already installed as part of Microsoft Office, though you wouldn't need it to be installed in order to use the Odbc or OleDb assemblies that are part of the GAC.

Will Marcouiller
+7  A: 

Take a look at SQL Server Compact 3.5

SQLMenace
Probably the best choice in that it has zero footprint external to the application, and it will easily integrated with any recent versions of Visual Studio.
Adam Crossland
A: 

SQL Server 2008 Express is available for redistribution by ISVs. You an also deploy this using Microsoft Web Platform Installer.

CodeToGlory
A: 

SQL Server Express is another option. Has excellent integration with .NET, free to install and supports upto 10GB per database (or more if you use the Filestream feature).

dportas
Express Edition is probably not the best choice here. Either he should choose an in-process engine or if it's one of those rare cases where you need a server-class engine for a desktop app he'd do better to stick with what he knows (MySql).
Joel Coehoorn
+1  A: 

I think, that an embedded DBMS is the best way for yor. For example, you can use Firebird Embedded

Amber
+1  A: 

The key here is what kind of database you need. Is this database to be shared among several users of the app? If so, than MySQL would be fine.

But it sounds more like you intend to use this database as a private data store, where each installed instance of the application has it's own data local to that machine or profile. In that case, you want an in-process engine like Sql Server Compact Edition, Sqlite, or even Access rather than a server-class engine like MySql or Sql Server Express Edition.

Joel Coehoorn