German Sync von Daten (SQLite, möglichst über Cloud)

mw71

Active Member
Licensed User
Longtime User
Moin, Moin,

ich möchte die Daten meiner App (SQLite DB) gerne Synchronisieren, wenn der Nutzer dies anfordert.
Dabei ergeben sich für mich 2 Probleme. Zum einen wie und wo. Über Bluetooth o.ä. ist für mich
irgendwie nicht die Optimale Lösung, lieber würde ich dies über eine Cloud erledigen.
Für Dropbox habe ich im Forum Lösungen gesehen, allerdings muss sich der Nutzer da erst mal ein Konto
erstellen.... Eine "angenehme" Lösung wäre das mit dem Google Konto zu machen welches sowie mit dem
Handy verknüpft ist, nur dazu habe ich noch nichts gefunden. Ist dies überhaupt möglich?, wenn ja würde
ich mich über eine Anleitung, Beispiel o.ä. freuen.
Auch wenn jemand andere Ideen/Beispiele hat wie man das machen kann bin ich da für Vorschläge dankbar.

Das 2te Problem ist wie ich die Files Synchronisiere. Im Moment hatte ich mir überlegt erst eine SQLite
Datei einzulesen, in einer Schleife nachzuschauen ob alle Einträge vorhanden sind, falls nicht, ergänzen.
Anschließend das ganze noch mal anders herum. Gibt es da eine Elegantere Lösung?

Danke
 

Joe73

Active Member
Licensed User
Hallo,
an einer Antwort auf Deine erste Frage wäre ich auch sehr interessiert. D.h. die Sache mit Google Drive.
Zu Deiner 2. Frage :
Ich würde vielleicht nach dem Datum/Zeit gehen an welchem die Dateien erstellt wurden. Also die ältere immer mit der neueren Datei ersetzen. Es ist ja auch möglich, dass Einträge aus einer Datenbank gelöscht werden.

Mfg Jürgen
 

mw71

Active Member
Licensed User
Longtime User
Zu Deiner 2. Frage :
Ich würde vielleicht nach dem Datum/Zeit gehen an welchem die Dateien erstellt wurden. Also die ältere immer mit der neueren Datei ersetzen. Es ist ja auch möglich, dass Einträge aus einer Datenbank gelöscht werden.

Abend zusammen,

so einfach geht das leider nicht, da ja in beiden DB Daten geändert (meistens ergänzt) sein können. Wenn Daten gelöscht wurden werden sie wieder eingefügt. Später kann man sich überlegen erst mal alle Änderungen anzuzeigen und dann Fragen welche Synchronisiert werden sollen bzw in welche Richtung, aber eins nach dem anderen.
Mal schauen ob noch jemand eine Idee hat, besonders zur 1. Frage. Geht das nicht mit B4A oder hat das noch keiner gemacht?

Grüße
 

Joe73

Active Member
Licensed User
Hallo,
ein sicher nicht so einfaches Problem, die 2. Frage...(die Erste erst recht nicht)
Vielleicht könnte man das über die Zeit hinbekommen bzw. die Änderungen sortieren nach dem
genauen Zeitpunkt und dann eine "Haupttabelle" entsprechend abgleichen.
....

Gruß Jürgen
 

mw71

Active Member
Licensed User
Longtime User
Hallo Jürgen & mitleser,

da du ja ein ähnliches Problem hast (wenn ich das richtig gesehen habe), hier mal meine (derzeitige, aber noch nicht 100% Lösung):

B4X:
'Quell DB, Ziel DB, in der Quell, aber  nicht in der Ziel DB enthaltene Datensätze
Sub DBCompare (qSQL As SQL, zSQL As SQL) As List

Dim qListe, zListe As List
Dim curs As Cursor
Dim query As String

qListe.Initialize
zListe.Initialize


qListe=DBUtils.ExecuteMemoryTable(qSQL,"Select * FROM Log",Null,0)

For c=0 To qListe.Size-1
 
    Dim varStr() As String =qListe.Get(c)

    query= "SELECT * FROM log WHERE Zeit= '" & varStr(2) & "' AND Call='" & varStr(3) & "' AND Send='" & varStr(4) .......

    curs = zSQL.ExecQuery(query)

    If curs.RowCount<=0 Then      
        zListe.Add(qListe.Get(c))
    End If
 
Next


Return zListe

End Sub

Musst die natürlich an deine Struktur... anpassen und die Daten müssen noch in die DB geschrieben werden.
Das ganze funkt. (nur das die Daten noch nicht in die DB geschrieben werden).
Lässt man das ganze 2x durchlaufen (mit getauschten Quell und Zielverzeichnis) sind beide DB Synchron.

Es gibt natürlich auch Einschränkungen
- in einer DB gelöschte Einträge werden wiederhergestellt
- wird ein, in beiden DB vorhandener Eintrag editiert, wird er dann 2x vorhanden sein
(beide Versionen), dass kann man (wahrscheinlich) nur mit einer eindeutigen ID pro Datensatz lösen


Es stellen sich mir jetzt noch ein paar Fragen
- gibt es Effektivere Varianten??

Fragen die man für sich selbst beantworten muss
- soll die DB anschl. Sortiert werden
- soll vor dem Schreiben erst mal nachgefragt werden ob die Daten wirklich eingefügt werden soll

Grüße
 
Last edited:
Top