-1

実際のデバイス上の SQLite db テーブルの内容を表示するバッチ スクリプトがあります。

  @ECHO OFF
  SET packageId=com.brightideahub.motorassistant
  SET databaseName=test_event_data.db
  SET tableName=test_table
  adb shell "su -c 'sqlite3 -header -column /data/data/%packageId%/databases/%databaseName% \"SELECT * FROM %tableName%\"'"
  pause

問題は、DB が変更されるたびに、このスクリプトを再実行して変更を確認する必要があることです。 logcatメッセージがリアルタイムで表示されるのと同様に、DBのコンテンツをストリーミングする方法はありますか?

また、sqlite3 コマンドで使用できるオプションについても調べました。-batchおよび-interactiveオプションが正確に何をするのか、そしてそれらが私が達成しようとしていることに役立つかどうかを誰かが説明できますか?

  sqlite3 -help
  Usage: sqlite3 [OPTIONS] FILENAME [SQL]
  FILENAME is the name of an SQLite database. A new database is created
  if the file does not previously exist.
  OPTIONS include:
     -bail                stop after hitting an error
     -batch               force batch I/O
     -column              set output mode to 'column'
     -cmd COMMAND         run "COMMAND" before reading stdin
     -csv                 set output mode to 'csv'
     -echo                print commands before execution
     -init FILENAME       read/process named file
     -[no]header          turn headers on or off
     -help                show this message
     -html                set output mode to HTML
     -interactive         force interactive I/O
     -line                set output mode to 'line'
     -list                set output mode to 'list'
     -nullvalue TEXT      set text string for NULL values. Default ''
     -separator SEP       set output field separator. Default: '|'
     -stats               print memory stats before each finalize
     -version             show SQLite version
     -vfs NAME            use NAME as the default VFS
4

1 に答える 1

2

の出力logcatは、新しいデータのシリアル ストリームです。これにより、"ストリーミング" が非常に簡単になります。sqlite3 データベースへの更新は更新のシリアル ストリームではなく、更新のランダム アクセス コレクションです。つまり、論理的な意味でストリーミングするものは何もありません。

于 2013-05-04T10:50:30.783 に答える