At first I will vote for Sqlite because it is compact, lightweight and fast, but depending on your application you can go with other options like Firebird or PostgreSql.
for example, Sqlite has a limit on one script at the same time, this may not be a problem for most desktop applications that are used by one user, but will not be scaled for more future use.
you can go with FireBird built in as a solution that will act like Sqlite and then go to the Firebird server when you need more users.
On the other side of the BlackFish database, you will force you to install the .NET infrastructure on your client machines, which is something bad IMO, especially if you need to distribute your application on the Internet, in addition, you will need a license when it scales to more than final version.
source share