По поводу монопольности SQLite. Выдержка из хелпа (раздел "SQLite multi-user"):
Код: Выделить всё
Updating data with SQLite
You can access the same SQLite file from multiple processes. However, only one process can write to the file at the same time. Once a process has written to any table in the SQLite database file that process is the only process that can write to any table in that database.
SQLite and Multithreading
SQLite is designed to be used on a single thread but he Clarion file driver overcomes this limitation as much as possible. To make this work the driver has one limitation on usage. Only one thread can be accessing the SQLite database while a transaction is active. If another thread attempts to access an SQLite database and another thread is in the middle of a transaction, the non-transacting thread will wait until the transaction is completed..
И ещё вот какие мысли. Когда меня попросили посмотреть небезызвестный LeaderTask года 3 назад, а у них база на SQLite (причём открытая), я смотрел этот SQLite, тем более, что SV планировало сделать драйвер. Так вот, оказалось, что у него очень ограниченный функционал. Видимо, потому, что движка нет. Триггеры ущербные, хранимок принципиально нет. И я думал - а как использовать этот SQLite? Единственный плюс - поддержка SQL запросов. Вряд ли есть выигрыш по времени, выигрыш по безопасности по сравнению с TPS. Даже не знаю. Разработка должна быть ориентирована исключительно на единоличное использование и, наверно, на планшеты, смартфоны. С другими Embedded базами, думаю, такая же история.
И ещё по поводу пользовательских SQL-запросов. У нас в программе предусмотрена такая штука, но, похоже, ни разу не была востребована. Без подготовки не напишешь, особенно, если выборка больше, чем по двум таблицам. Нужно очень хорошо знать структуру данных, связи и т.д.