Bei einem Projekt basierend auf Xamarin und SQLite unter iOS kommt es in letzter Zeit häufiger dazu, daß Daten in die Datenbank geschrieben werden, aber beim Auslesen nicht vorhanden sind. Hier schematisch der Code (intern mit SQLite.NET als ORM):
C#-Quelltext
1: 2: 3:
| int id = SaveData(data);
var data2 = ReadData(id); |
Es wird auch jeweils eine korrekte (neue) Id zurückgegeben, und im Normalfall auch die Daten wieder erfolgreich gelesen.
Bei bestimmten Use-Cases aber (evtl. wenn andere Threads parallel schreibend/lesend auf die SQLite-DB zugreifen?) wird dann einfach
null zurückgegeben (d.h. das Objekt wurde anhand der Id nicht gefunden).
Mittels Absicherungsmaßnahmen zum Verhindern einer Busy/Locked
SQLiteException gibt es intern schon entsprechenden Code, welcher dann bis zu 100x versucht, die Daten (im Abstand von einigen Millisekunden) neu zu schreiben bzw. zu lesen (und dies wird auch protokolliert).
Aber selbst das passiert dann nicht, d.h. die Daten werden anscheinend korrekt in die DB gespeichert, aber können irgendwie nicht mehr ausgelesen werden (auch nicht nach einem Neustart der App).
Ich weiß, das sind nicht wirklich detailierte Infos, aber ich benötige auch eher Tipps bzw. Gedankenanregungen, wie ich den Fehler mehr auf die Spur kommen kann, um die eigentliche Ursache zu finden.