1. How to deploy programs that using SQLite?
2. Is it free for commercial projects?
3. Is SQLite too overkill?
4. How is MySQL compare to SQLite?
5. Any other suggestion?
All you need to supply is sqlite3.dll together with your program (and the database file of course).At least for Windows, I have no experience with Linux.
Overkill? No, SQLite is light and fast and good even for just storing the application settings in a table. MySQL is made for use by many simultaneous clients and makes sense for web and multiuser. SQLite is not really that, it locks the database when ONE user is working with it. There are ways around that, like using the (free) ZEOS components in read-only mode and only use read/write when necessary. Or you can perhaps code something that uses threads, events or critical sections that controls the access to SQLite. But if you need multitasking with many users you may be better off with for example MySQL and tools like MySQL Workbench (http://www.mysql.com/products/workbench/). For a real DBMS (database management system) the smoothest and most productive choice for you could certainly be MySQL. Tools, support, litterature and examples are plenty. If you move on to MySQL there will be slightly different syntax for some things and you have to learn that. Moving to PostGres, again there is slightly other syntax. PostGres is just as good, but less litterature and smaller market share. It has a pretty good tool (https://www.pgadmin.org/)
Especially due to your remarks about the "no lib file".With FPC, the mORMot offers you a static SQLite3 on various systems (windows/linux).So, a single executable without the need for a lib.The whole SQLite3 is included in this single exe.
It is simply the difference between statically linking and dynamically linking. The latter needs a shared library (dll, so)Yes. The Sqlite license is super permissive.If you NEED sql it is the most lightweight solution. You may look at TBufDataSet and TMemDataSet for even more lightweight w/o sql.There's no real comparison. MySql is designed as a fully fledged sql server, Sqlite is designed as a single point storage that support sql querying.mOrMoT uses Sqlite in a server-like fashion.DonAlfredo's answer: link Sqlite statically. Or if you do not need Sql, I would suggest TBufDataSet. It works with all data controls and has still good support for searching and filtering. But no sql.