0

我想从 parse.com 获取数据

public void ParseQueryMap() {
         query = new ParseQuery("MyObject"); 
         query.findInBackground(new FindCallback() {
              public void done(List<ParseObject> myObject, ParseException e) {
              if (e == null) {
                  for ( int i = 0; i < myObject.size(); i++) {              
                              stranaGet = myObject.get(i).getString("Country");
                              oblastGet = myObject.get(i).getString("District");
                              gorodGet = myObject.get(i).getString("City");
                     }
              } 
}

我想把所有这些数据都放到Android数据库中

DBHelper dbHelper;
 @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);

            dbHelper = new DBHelper(this);
            ContentValues cv = new ContentValues();
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            String name = etName.getText().toString();
            String email = etEmail.getText().toString();

            cv.put("name", name);
            cv.put("email", email);
            Cursor c = db.query("mytable", null, null, null, null, null, null);

            if (c.moveToFirst()) {


        int idColIndex = c.getColumnIndex("id");
        int nameColIndex = c.getColumnIndex("name");
        int emailColIndex = c.getColumnIndex("email");

        do {
          Log.d(LOG_TAG, "ID = " + c.getInt(idColIndex) + 
                                 ", name = " + c.getString(nameColIndex) + 
                                 ", email = " + c.getString(emailColIndex));
          } while (c.moveToNext());
        } else {
         Log.d(LOG_TAG, "0 rows");
        c.close();
        }

       dbHelper.close();

}

    class DBHelper extends SQLiteOpenHelper {

        public DBHelper(Context context) {
          super(context, "myDB", null, 1);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
           db.execSQL("create table mytable ("
              + "id integer primary key autoincrement," 
              + "name text,"
              + "email text" + ");");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }
      }

在此示例中,数据取自 EditText,但我想用 parse.com 填充数据库。怎么会这样?更新:我试着喜欢这个

public void ParseQueryMap() {
             query = new ParseQuery("MyObject"); 
             query.findInBackground(new FindCallback() {
                  public void done(List<ParseObject> myObject, ParseException e) {
                  if (e == null) {
                      for ( int i = 0; i < myObject.size(); i++) {              
                                  stranaGet = myObject.get(i).getString("Country");
                                  oblastGet = myObject.get(i).getString("District");
                                  gorodGet = myObject.get(i).getString("City");
                                  cv.put("name",  stranaGet);
                                  cv.put("email", oblastGet);
                                  db.insert("mytable", null, cv);
                         }
                  } 
    }

但什么也没发生

4

2 回答 2

2

查询方法用于读取数据。

插入数据,使用insert方法;像这样:

db.insert("mytable", null, cv);
于 2013-08-07T12:21:24.727 回答
2

有更好的方法来做到这一点。

如果您使用一些适用于 Android 的 ORM 引擎(例如OrmLite),它允许您将数据库实体映射到 java 类,那么与 parse.com 的集成非常简单直接。实际上,当我在 android 中发现ORM时,我再也离不开它了 :)

假设您有实体类,映射到某个数据库表。您可以为其字段添加注释,以便将它们映射到 parse.com 相应的类字段。然后你编写一个代码来相应地处理这些注释。

但实际上,您不必再编写代码了。这是这个想法的一个简单实现:https ://github.com/ntoskrnl/DataSync

随意贡献:)

简而言之,该库提供了将带注释的类转换为ParseObject反之亦然的方法。它还为您提供了一种同步本地和远程数据的简单方法(它使用解析objectIdupdatedAt字段来决定做什么)

于 2014-10-28T13:49:24.743 回答