2016-07-23 7 views
2

Hier ist mein SzenarioMehrfachzugriff auf SQLite-Datenbank SQLite schnellen iOS

ich mehrere Anfrage haben, wenn ich meine App anmelden, und in einer seiner Antwort enthält 10.000 + Datensätze.

Ich verwende SQLite.swift in meinem Projekt.

Alles funktioniert gut, wenn der Benutzer sich nicht abmeldet oder nicht mehr als 1 Aufgabe wie Suchen oder Abrufen von Daten aus db. Wenn ein Fall eintritt, bleibt die App hängen oder stürzt ab.

Ich verwende Transaktionen für Masseneinfügung, aber wenn ich versuche, auf andere gleiche Tabellendaten zuzugreifen, dann erstarrt die App, bis alles fertig ist.

habe ich versucht, mehrere Verbindungen mit zu db einfügen, aber wenn eine andere Verbindung seiner verriegelten und App wird mit dem db dann stürzt

fatal error: 'try!' expression unexpectedly raised an error: database is locked: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.1/src/swift/stdlib/public/core/ErrorType.swift, line 54

try DataManager.con.transaction { 

      for index in 0 ... (entity.count - 1) { 
      try DataManager.con.run(table.insert(
        Latitude <- entity[index]["Latitude"].string, 
        Longitude <- entity[index]["Longitude"].string 
       )) 
      } 
     } 

Hier ist DataManager.con ein Singleton-Objekt

Bitte Hilfe.

+0

Führen Sie Ihre db-Transaktionen im Hintergrund-Thread oder in anderen Threads als 'main thread' aus. – Santosh

+0

@Santosh Ich mache das gleiche, die Bulk-Einfügung sind im Hintergrund Thread, wie ich ein Singleton-DB-Objekt verwende, wenn ich versuche, auf eine andere Tabelle zugreifen friert es – vinbhai4u

+0

Es kann mehrere Gründe geben und Sie haben keine relevanten Informationen zur Verfügung gestellt, z. B. CoreData .SQLDebug Protokolle, anfällig Code Block, etc. – Khundragpan

Antwort

0

Mit sqlite.swift war es nicht möglich, gleichzeitige Verbindungen zu erstellen.

Also habe ich meine Stammdaten in eine andere db verschoben und eine separate Verbindung für sie erstellen.

Ich habe auch

do{ 
// Start transaction 
// code 
// Commit transaction 
} 
catch { 
} 

Fehler, wenn die Abmeldung eines Benutzers zu handhaben oder schließt die App wird Transaktion teilweise Datensicherung auch

Vielen Dank an alle, die geholfen halten helfen.