Mysql
 sql >> Baza danych >  >> RDS >> Mysql

szybka synchronizacja danych podstawowych danych z bazą danych mysql

Nie ma najszybszego sposobu, ale zdecydowanie mogę zaproponować coś, co działa dla mnie. Najlepiej czy nie - decyzja należy do Ciebie.

Twoje pytanie jest również bardzo ogólne - ponieważ obejmuje całą infrastrukturę zaplecza aplikacji mobilnej. Postaram się być jak najbardziej konkretny -

1) Wykonaj żądanie posta http do pliku php, który wybierze wszystkie dane bazy danych mysql i zwróci wynik do aplikacji -

Po otrzymaniu wyniku możesz go przeanalizować w danych podstawowych, jak w poniższym przykładzie -

    func writeDataToSqliteStore() throws {

                // Configure the Network Call here with NSURL & NSData returning an array that you can write to the Core Data SQLITE backend.
            do {
                jsonResponse = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as? NSArray
            } catch {
                print(error)
            }
                let localEntity = self.insertNewEntity("EntityName") as? CoreDataEntityClass

                for singleObject in jsonResponse {

                    localEntity.name = singleObject.valueForKey("name")
                    localEntity.address = singleObject.valueForKey("address")
            }
  }

2) Sprawdź, które dane istnieją w danych podstawowych => nic do zrobienia, a które dane są nowe => zapisz nowe dane w danych podstawowych -

Możesz wykonać dobre wywołanie głowy ze znacznikiem czasu i sprawdzić, czy dane zostały zaktualizowane. Jeśli dane zostały zaktualizowane - aktualizacja poszczególnych atrybutów danych podstawowych może być trochę trudna. To, co zawsze działało dla mnie, to usunięcie backendu SQLITE na urządzeniu i ponowne uruchomienie metody zapisu danych. Możesz użyć poniższego przykładu -

func removeSQLITEFiles() {
    let fileManager = NSFileManager.defaultManager()
        let URL1 = self.applicationDocumentsDirectory.URLByAppendingPathComponent("File.sqlite")
        let URL2 = self.applicationDocumentsDirectory.URLByAppendingPathComponent("File.sqlite-wal")
        let URL3 = self.applicationDocumentsDirectory.URLByAppendingPathComponent("File.sqlite-shm")

        if fileManager.fileExistsAtPath(URL1.path!) {
            do {
             try fileManager.removeItemAtURL(URL1)
            }
            catch {error}
        }

        if fileManager.fileExistsAtPath(URL2.path!) {
            do {
                try fileManager.removeItemAtURL(URL2)
            }
            catch {error}
        }

        if fileManager.fileExistsAtPath(URL3.path!) {
            do {
                try fileManager.removeItemAtURL(URL3)
            }
            catch {error}
        }

    }

Następnie możesz uruchomić writeDataToSqlieStore() metoda ponownie.

Mam nadzieję, że to pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql:Nie możemy utworzyć wyzwalaczy na tabelach systemowych?

  2. Sortowanie SQL według pierwszych dwóch znaków pól

  3. Aplikacja Windows Phone 8.1 łączy się z bazą danych

  4. MySQL AUTO_INCREMENT nie wycofuje się

  5. mysql nie działa, ale subsys jest zablokowany