Kesalahan database
SqliteException dilemparkan ketika kesalahan SQLite ditemui. Pesan disediakan oleh SQLite. Properti SqliteErrorCode
dan SqliteExtendedErrorCode
berisi kode hasil SQLite dari kesalahan.
Kesalahan dapat ditemui setiap kali Microsoft.Data.Sqlite berinteraksi dengan pustaka SQLite asli. Daftar berikut ini memperlihatkan skenario umum di mana kesalahan dapat terjadi:
- Membuka koneksi.
- Memulai transaksi.
- Melaksanakan perintah.
- Memanggil NextResult.
Pertimbangkan dengan cermat bagaimana aplikasi Anda akan menangani kesalahan ini.
Penguncian, percobaan ulang, dan batas waktu
SQLite bersifat agresif dalam hal mengunci tabel dan file database. Jika aplikasi Anda mengaktifkan akses database secara bersamaan, Anda mungkin akan mengalami kesalahan yang sibuk dan terkunci. Anda dapat mengurangi banyak kesalahan dengan menggunakan pengelogan write-ahead.
Setiap kali Microsoft.Data.Sqlite mengalami kesalahan yang sibuk atau terkunci, Microsoft.Data.Sqlite akan secara otomatis mencoba kembali hingga berhasil atau batas waktu perintah tercapai.
Anda dapat meningkatkan batas waktu perintah dengan mengatur CommandTimeout. Batas waktu default adalah 30 detik. Nilai 0
berarti tidak ada batas waktu.
// Retry for 60 seconds while locked
command.CommandTimeout = 60;
Microsoft.Data.Sqlite terkadang perlu membuat objek perintah implisit. Misalnya, selama BeginTransaction. Untuk mengatur batas waktu untuk perintah ini, gunakan DefaultTimeout.
// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;