Mysql
 sql >> Base de données >  >> RDS >> Mysql

données de synchronisation rapide des données de base d'une base de données mysql

Il n'y a pas de moyen le plus rapide, mais je peux certainement suggérer quelque chose qui fonctionne pour moi. Meilleur ou pas - c'est à vous de décider.

De plus, votre question est très générique - car elle englobe toute l'infrastructure dorsale d'une application mobile. Je vais essayer d'être aussi précis que possible -

1) Faites une demande de publication http à un fichier php, qui sélectionne toutes les données de la base de données mysql et renvoie le résultat à l'application -

Une fois que vous avez reçu le résultat, vous pouvez l'analyser dans Core Data comme dans l'exemple ci-dessous -

    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) Vérifiez quelles données existent dans les données de base => rien à faire, et quelles données sont nouvelles => enregistrez les nouvelles données dans les données de base -

Vous pouvez faire un bon appel principal avec un horodatage et vérifier si les données ont été mises à jour. Si les données ont été mises à jour, la mise à jour des attributs individuels des données de base peut être un peu délicate. Ce qui a toujours fonctionné pour moi, c'est de supprimer le backend SQLITE sur l'appareil et d'exécuter à nouveau la méthode d'écriture de données. Vous pouvez utiliser l'exemple ci-dessous -

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}
        }

    }

Après cela, vous pouvez exécuter le writeDataToSqlieStore() méthode à nouveau.

J'espère que ça aide.