2

私のプロジェクトでは、学生がメイン サーバー (MySQL データベース) から自分の Android デバイス (SQLite) にクラス ルーチン (スケジュール) を取得する必要があります。

->学生は、アプリケーションを初めて実行するときにサーバーからルーチンを取得し、Android デバイスに負荷をかけ、ルーチン/コースのタイムテーブルが更新されると更新を取得する必要があります。オフライン モードでルーチンを表示できる必要があるため、SQLite にはサーバーと同じデータが含まれます。

PHP と JSON を使用して、既にデータベースからデータを取得して解析しました。ルーチンの詳細を SQLite に挿入する必要があるのは 1 回だけです。データベースのOnCreateメソッドで、データの取得、解析(メインサーバーから)、およびSQLiteへの挿入を行う必要がありますか、それともより効率的に行う別の方法がありますか。

これが愚かな質問である場合は申し訳ありませんが、私はSQLiteとAndroidが初めてです。

4

2 に答える 2

4

私はsharedpreferencesを使用してデータを1回だけ挿入し、次のように使用します:

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 if (isFirstTime()) {
    // insert data 
 }

 }



 private boolean isFirstTime()
 {
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
boolean ranBefore = preferences.getBoolean("RanBefore", false);
if (!ranBefore) {
    // first time
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean("RanBefore", true);
    editor.commit();
}
return !ranBefore;
}
于 2013-06-17T07:41:02.617 に答える
2

最初に、既存のテーブルが空かどうかをチェックするための sqlite データベース クラスのメソッドを 1 つ作成します。開始アクティビティの oncreate メソッドでそのメソッドを呼び出します。テーブルが空の場合は、そこにレコードを挿入します。それ以外の場合は挿入しません..

public boolean checkDBIsNull(String table) {
        Cursor cur = db.rawQuery("SELECT COUNT(*) FROM " + table + "", null);
        if (cur != null) {
            cur.moveToFirst();
            System.out.println("record : " + cur.getInt(0));
            if (cur.getInt(0) == 0) {
                System.out.println("Table is Null");
                cur.close();
                return true;
            }
            cur.close();
        } else {
            System.out.println("Cursor is Null");
            return true;
        }
        System.out.println("Table Not Null");
        return false;
    }
于 2013-06-17T07:06:19.500 に答える