Welcome to the SQLitening support forums!
Started by ressystems, April 21, 2011, 07:53:46 pm
QuoteBoth of these programs are using the .NET SQLite controls, and are opening / closing the file when they are "done".
QuoteAnother program, which is running on a remote computer (or multiple remote computers), allows the user to clock in / out using SQLitening.
QuoteEverything works "fine" when only one component is tested. However, when two or three are running, database lock ups start occurring, and/or the programs are crashing.
QuoteIs it possible to do table level locking?
QuoteMultiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however. We are aware of no other embedded SQL database engine that supports as much concurrency as SQLite. SQLite allows multiple processes to have the database file open at once, and for multiple processes to read the database at once. When any process wants to write, it must lock the entire database file for the duration of its update. But that normally only takes a few milliseconds. Other processes just wait on the writer to finish then continue about their business. Other embedded SQL database engines typically only allow a single process to connect to the database at once. When SQLite tries to access a file that is locked by another process, the default behavior is to return SQLITE_BUSY. You can adjust this behavior from C code using the sqlite3_busy_handler() or sqlite3_busy_timeout() API functions.
QuoteWhat happens if SQLitening has a database 'open', and we try and open it with the .NET ADO connector?