1

sqliteidの値をTAG_IDjsonWebサービスからの値と比較したいのですが、これを実行するために立ち往生しました。

私がこれまでに試したことは

class LoadAll extends AsyncTask<String, String, String> 
    {

            protected String doInBackground(String... args) 
            {
                Log.i("url ",url_all_products);

                    List<NameValuePair> params = new ArrayList<NameValuePair>();
                    JSONObject json = jParser.makeHttpRequest(url_all_products, "GET",params);
                    Log.w("All book: ", json.toString());
                    Log.i(url_all_products, url_all_products);                     
                    try 
                    {
                        System.err.println("json array "+json.getJSONArray(TAG_PRODUCTS));
                        bookProduct = json.getJSONArray(TAG_PRODUCTS);

                    } 
                    catch (JSONException e) 
                    {
                            e.printStackTrace();

                    } 
                    if(data_exist!=bookProduct.length()){
                        Log.i("in update","m here");
                         Cursor cursors = getRawEvents("select id from bcuk_book");

                             try{

                             for (int i = 0; i < bookProduct.length(); i++) {
                                 JSONObject c = bookProduct.getJSONObject(i);

                                 String Bid = c.getString(TAG_ID);

                                 ArrayList<String> mapId = new ArrayList<String>();

                                    mapId.add(TAG_ID);

                                    Log.e(Bid,Bid);

                                    while(cursors.moveToNext())
                                    {
                                     System.err.println("update coded STEON"+cursors.getString(0));
                                     Log.e(Bid,c.getString(TAG_ID));

                                    }
                             }

                         }
                             catch(JSONException e){
                                 e.printStackTrace();
                             }
                    }
                    else{
                        Log.i("Done good","m here");
                    }
                    return null;               
            }

背後にある理由

    if(data_exist!=bookProduct.length()){

このステートメントは変数ですdata_exist=cursor.getCount();

そして、これbookProduct.lengthはjsonarrayの長さです。長さが同じでない場合は、それらを比較したいので、新しい値をsqliteに更新します。誰かがこれを行うためのアプローチを提案できますか?

4

1 に答える 1

1

長さが同じでない場合は、新しい値をsqliteに更新します。

データベースを更新する良い方法ではありません。
サーバーデータベースのフィールドにいくつかの変更があるとします。カウントは同じですが、内容が異なります。
これが私のやり方です:

 String sql = "select * from " + DB_TABLE + " where " + TAG_ID + "='" + id + "'";
 Cursor c = database.rawQuery(sql, null);
 c.moveToFirst();
 if( c.getCount() > 0){ // already in the database
      // update entry with TAG_ID = id
  }
  else{ // new entry
      // add new entry
  }
于 2012-12-17T09:57:47.623 に答える