2017-07-06 5 views
0

Aktualisierung Ich versuche, einen Fehler zu zwingen, durch die Aktualisierung einer Zeile eine Ausnahmebehandlung zu testen, nachdem es die folgenden Schritte gelöscht wurde unter Verwendung von:SQLite - kein Fehler, wenn eine gelöschte Zeile

1. Load record into GUI 
2. Pull .db3 file to Windows 
3. Delete record with sqlite3 
4. Push .db3 file back to Android 
3. Save record from GUI 

Allerdings gibt ist keine Ausnahme von ExecuteNonQuery() geworfen noch gibt es etwas in Logcat.

Warum, wenn für Schritt 3, wird die DB-Datei stattdessen umbenannt eine Ausnahme ausgelöst, aber nicht beim Löschen des Datensatzes?


Update: Löschen die Aufzeichnung direkt aus dem Gerät mit sqlite3 Ergebnissen in diesem gleichen Verhalten.

Hinweis: Samsung Galaxy Tab2 erfordert die PIE (positionunabhängige Ausführung) Version.

+2

Es kann aus der Journaldatei lesen/schreiben. Anstelle der Schritte 2 bis 4 schreiben Sie einen zusätzlichen Code, um den Datensatz zu löschen und das Speichern zu versuchen. Siehe https://stackoverflow.com/questions/26209091/what-is-the-journal-sqlite-database-in-android für eine gute Lektüre! – petey

Antwort

0

Ich bin mir nicht sicher über die sql3 Datenanbieter. Sie möchten jedoch eine Abfragefunktion verwenden, keine Nicht-Abfrage für das Löschen. Ruft die von der Löschung betroffenen Zeilen in der Abfrage ab. Und dann werfen und Ausnahmeanzeige für das Szenario erforderlich, wenn keine Zeilen zurückgegeben werden.

+0

'ExecuteNonQuery()' wird vom 'Mono.Data.Sqlite'-Provider aufgerufen, nachdem eine' delete'-Anweisung von der Befehlszeilenschnittstelle 'sqlite3' ausgeführt wurde. – samosaris

1

Beim Aktualisieren einer Zeile wird kein Fehler/Ausnahme in SQL ausgelöst. Wenn eine Zeile in der Datenbank nicht gefunden wird, führt die Aktualisierungsabfrage nichts aus und zeigt keine Fehler-/Ausnahmemeldung an.

+0

Ich werde das testen. Ich ziehe es vor, beim Testen keinen Code hinzuzufügen, um den Test zu unterbrechen, da er geändert werden muss. Ich bevorzuge die Einführung als * real-world * -Szenarien wie möglich, aber dafür gebe ich ** petey ** 's suggeriert einen Versuch (das Umbenennen der DB-Datei gab eine Ausnahme, die zum Testen des zugehörigen try/catch ausreicht, also Ich bin nicht weitergegangen, bin aber jetzt daran interessiert, dieses Verhalten zu beobachten. – samosaris

1

Die Aktualisierungsabfrage wirft keine Fehler.

Verwandte Themen