27-11-2015, 11:10:15
(Dieser Beitrag wurde zuletzt bearbeitet: 27-11-2015, 11:37:38 von HansLenz.)
Falls jemand bei der Programmierung eines eigenen Statusboards auch die sqlite-DB nutzen möchte, hätte ich da ein paar Tipps. Wie schon erwähnt, läuft der Zugriff aus Tasker auf die DB ausschließlich über den Shell Aufruf aus Tasker. Ein typisches sqlite3 Command Line SQL sieht z.B. so aus:
sqlite3 "/storage/sdcard0/Android/data/test/files/.smarthome.sqlite" "PRAGMA journal_mode=OFF;""BEGIN TRANSACTION;""UPDATE shstatus SET offen =0,color='#00000000',erreichbarwarnung=0,zeit='07.39',update_flag=1 WHERE raum='ARBEITSZIMMER' AND geraet='Kamera AZ';""END TRANSACTION;"
Die Komponenten des Commands
sqlite3 "/storage/sdcard0/Android/data/test/files/.smarthome.sqlite"
sqlite3 ist die Command Line Shell für sqlite, danach der Pfad zur DB und der Name der DB
Absolut wichtig ist hier das Leerzeichen zwischen ...smarthome.sqlite" und "PRAGMA.... Wenn das nicht da ist, läuft nix.
Alle SQL Commands in der sqlite3 shell sind mit " abzugrenzen. Und zwar bis auf vorher geschilderte Ausnahme ohne Leerzeichen dazwischen.
Die Angaben von PRAGMA und BEGIN TRANSACTION und END TRANSACTION stellten sich als Muss für einigermaßen performante DB-Zugriffe heraus.
Nähere Details dazu gibt's bei google.
sqlite3 "/storage/sdcard0/Android/data/test/files/.smarthome.sqlite" "PRAGMA journal_mode=OFF;""BEGIN TRANSACTION;""UPDATE shstatus SET offen =0,color='#00000000',erreichbarwarnung=0,zeit='07.39',update_flag=1 WHERE raum='ARBEITSZIMMER' AND geraet='Kamera AZ';""END TRANSACTION;"
Die Komponenten des Commands
sqlite3 "/storage/sdcard0/Android/data/test/files/.smarthome.sqlite"
sqlite3 ist die Command Line Shell für sqlite, danach der Pfad zur DB und der Name der DB
Absolut wichtig ist hier das Leerzeichen zwischen ...smarthome.sqlite" und "PRAGMA.... Wenn das nicht da ist, läuft nix.
Alle SQL Commands in der sqlite3 shell sind mit " abzugrenzen. Und zwar bis auf vorher geschilderte Ausnahme ohne Leerzeichen dazwischen.
Die Angaben von PRAGMA und BEGIN TRANSACTION und END TRANSACTION stellten sich als Muss für einigermaßen performante DB-Zugriffe heraus.
Nähere Details dazu gibt's bei google.