1) Y a-t-il un pragma ou de tout moyen de connaître le courant État de verrouillage de SQLite dB ?.
2) En outre, est-il un moyen de savoir si un autre processus utilise la DB?. P>
3 Réponses :
pas de pragma, mais le FAQ états: p>
Lorsque SQLite tente d'accéder à un fichier verrouillé par un autre processus, le comportement par défaut consiste à renvoyer SQLITE_BUSY. P> blockQuote>
Toutefois, cela signifie uniquement que la base de données est verrouillée pour écrire, ne pas lire. P>
Concernant # 1: Non, car la réponse que vous avez obtenue serait immédiatement obsolète (c'est-à-dire si vous avez une réponse de "Non la base de données n'est pas verrouillée", quelqu'un d'autre pourrait venir et le verrouiller immédiatement, vous laissant avec mauvais info). P>
L'approche correcte consiste simplement à essayer votre opération (éventuellement avec un délai d'attente) et à voir si elle réussit. P>
Oh ouais, le délai d'attente est la voie à suivre. J'ai oublié ce peu.
Cela n'existait probablement pas en 2011, mais sqlite3_txn_state le fera aujourd'hui: https: / /wwww.sqlite.org/c3ref/txn_state.html p>
Malheureusement, il ne semble pas y avoir de pragme, qui pose problème parce que la plupart des liaisons de langue SQLite ne lui donnent pas accès. P>