2

我的项目要求学生从主服务器(MySQL 数据库)到他们的 android 设备(SQLite)检索一个类例程(计划)。

->学生需要在他们第一次运行应用程序时从服务器获取例程负载到他们的 Android 设备上,然后随着例程/课程的时间表更新而获得更新。他们应该能够在离线模式下查看例程,因此 SQLite 将具有与服务器上相同的数据。

我已经使用 PHP 和 JSON 从数据库中检索和解析数据。我只需要在 SQLite 中插入例程详细信息一次。所以我必须在数据库 OnCreate方法上进行数据检索、解析(从主服务器)和插入到 SQLite,还是有另一种更有效的方法。

对不起,如果这是一个愚蠢的问题,我是 SQLite 和 android 的新手。

4

2 回答 2

4

我只使用 sharedpreferences 插入数据一次,只需以这种方式使用它:

 @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 数据库类中创建一个方法来检查现有表是否为空。并在您的起始活动的 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 回答