Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
SqliteException dobásra kerül SQLite-hiba esetén. Az üzenetet az SQLite biztosítja. A SqliteErrorCode tulajdonságok tartalmazzák SqliteExtendedErrorCode a hiba SQLite eredménykódját .
Hibák bármikor előfordulhatnak, amikor a Microsoft.Data.Sqlite a natív SQLite-kódtárat használja. Az alábbi lista azokat a gyakori forgatókönyveket mutatja be, ahol hibák léphetnek fel:
- Kapcsolat megnyitása.
- Tranzakció elindítása.
- Parancs végrehajtása.
- Hívás NextResult.
Alaposan gondolja át, hogy az alkalmazás hogyan fogja kezelni ezeket a hibákat.
Zárolások, újrapróbálkozások és időtúllépések
Figyelmeztetés
Bár az SQLite több szálból is támogatja ugyanahhoz az adatbázishoz való egyidejű hozzáférést, a .NET API-objektumok nem szálbiztosak. Ez azt jelenti, hogy SqliteConnection, SqliteCommand és SqliteDataReader nem oszthatók meg, és nem használhatók egyszerre több szálból.
Ha a Microsoft.Data.Sqlite-ot egyidejű alkalmazás esetén használja, egyszerűen hozzon létre és nyisson meg egy új példánytSqliteConnection, amikor hozzáfér az adatbázishoz (a készletezés biztosítja, hogy ez egy gyors művelet).
Az SQLite agresszív a táblák és adatbázisfájlok zárolása során. Ha az alkalmazás engedélyezi az egyidejű adatbázis-hozzáférést, valószínűleg foglalt és zárolt hibákba ütközik. Az előre írt naplózással számos hibát elháríthat.
Amikor a Microsoft.Data.Sqlite foglalt vagy zárolt hibába ütközik, a rendszer automatikusan újrapróbálkozza, amíg sikeres nem lesz, vagy el nem éri a parancs időtúllépését.
A parancs időtúllépését a CommandTimeout beállítással növelheti. Az alapértelmezett időtúllépés 30 másodperc. Az érték 0 azt jelenti, hogy nincs időtúllépés.
// Retry for 60 seconds while locked
command.CommandTimeout = 60;
A Microsoft.Data.Sqlite-nek néha implicit parancsobjektumot kell létrehoznia. Például a BeginTransaction során. A parancsok időtúllépésének beállításához használja a következőt DefaultTimeout: .
// Set the default timeout of all commands on this connection
connection.DefaultTimeout = 60;