2017-12-18 10 views
1

形式データを解析するAndroidデータのsqliteデータベースにデータを挿入します。 http://demo4896782.mockable.io/shopsjson構文解析からsqliteデータベースにデータを挿入

[ 
    { 
    "shopName": "Hello World.", 
    "shopTeluguName": "శరవాన గుడ్డు పంపిణీదారులు", 
    "shopAddress": "Bomanahalli", 
    "previousDues": 0, 
    "shopID": 1 
}, 
{ 
    "shopName": "Hello World.", 
    "shopTeluguName": "శరవాన గుడ్డు పంపిణీదారులు", 
    "shopAddress": "Bomanahalli", 
    "previousDues": 20, 
    "shopID": 2 
}, 
{ 
    "shopName": "Hello World.", 
    "shopTeluguName": "శరవాన గుడ్డు పంపిణీదారులు", 
    "shopAddress": "Bomanahalli", 
    "previousDues": 400, 
    "shopID": 3 
} 
] 
- 私はこのJSONデータ
のAPiを挿入する必要があり、このテーブルへのデータベース作成

public class DueAmountDataBHelper extends SQLiteOpenHelper { 

    public DueAmountDataBHelper(Context context) { 
     super(context, "abc.db", null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_TABLE_PRODUCT_DUE_AMT = 
       "create table due_amt_tab(" + 
         "shopId text primary key, " + 
         "shopName text NOT NULL, " + 
         "teluguName text NOT NULL, " + 
         "place text NOT NULL, " + 
         "dueAmount text NOT NULL " + 
         ")"; 
     db.execSQL(CREATE_TABLE_PRODUCT_DUE_AMT); 
    } 

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

    } 

    public List<DueAmtDBModel> getShopdata() { 
     List<DueAmtDBModel> data = new ArrayList<>(); 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery("select * from due_amt_tab", null); 
     StringBuffer stringBuffer = new StringBuffer(); 
     DueAmtDBModel dataModel = null; 
     while (cursor.moveToNext()) { 
      dataModel = new DueAmtDBModel(); 
      String shopId, shopName, teluguName, place, dueAmount; 

      shopId = cursor.getString(cursor.getColumnIndexOrThrow("shopId")); 
      shopName = cursor.getString(cursor.getColumnIndexOrThrow("shopName")); 
      teluguName = cursor.getString(cursor.getColumnIndexOrThrow("teluguName")); 
      place = cursor.getString(cursor.getColumnIndexOrThrow("place")); 
      dueAmount = cursor.getString(cursor.getColumnIndexOrThrow("dueAmount")); 

      dataModel.setShopId(shopId); 
      dataModel.setShopName(shopName); 
      dataModel.setTeluguName(teluguName); 
      dataModel.setPlace(place); 
      dataModel.setDueAmount(dueAmount); 

      stringBuffer.append(dataModel); 
      data.add(dataModel); 
     } 
     return data; 
    } 
} 

-

1)DBHelperClass:

私のコードは次の通りであります

ありがとうございます。

+0

または単にテーブルに文字列として 'json-string'を格納し、モデルクラスを使用して必要に応じて** Gson **ライブラリを使用して直列化または逆直列化することができます。 –

+0

私はそれを行うことができませんでした、サンプルプログラムを見せてください。 –

答えて

0

以下のコードは、サーバーからjsonデータを解析できることを前提としています。

public void insert(JsonObject jsonObject){ 
    ContentValues values = new ContentValues(); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    values.put("shopName", jsonObject.getString('Hello World')); 
    values.put("shopTeluguName", jsonObject.getString('shopTeluguName')); 
    values.put("shopAddress", jsonObject.getString('shopAddress')); 
    values.put("previousDues", jsonObject.getString('previousDues')); 
    values.put("shopID", jsonObject.getString('shopID')); 

    db.insert("YOUR TABLE NAME", null, values); 
} 

今、単純にJSON配列を反復し、ループのすべての

0

まず、この関数を呼び出し、テーブル構造は次のようになります。

CREATE TABLE IF NOT EXISTS "TABLE_NAME" + "(" + JSON_STRING_KEY + " TEXT ")

、モデルクラスを作りますあなたがAPIから得ているjson配列のために。

さて、挿入テーブルでこのJSON-配列に、あなたはこのような何か行うことができます。今まで

void insertJsonArrayAsStringToTable(ArrayList<Model> modelList) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(TABLE_NAME, null, null); // delete previous data 
    ContentValues contentValues = new ContentValues(); 
    // array list as a string; or you can directly put the string you got from 
    // onResponse(String response) of your volley StringRequest--if you're using it 
    contentValues.put(JSON_STRING_KEY, new Gson().toJsonTree(modelList).toString()); 
    db.insert(TABLE_NAME, null, contentValues); 
    db.close(); 
} 

を、私たちはテーブルとしてに保存されているAPIからJSON-配列データを持っています文字列。

今、私たちはテーブルから文字列を取得し、再び(、ここでModelArrayList)を対象に変換にGsonを使用にクエリを使用することができます。

public ArrayList<Model> loadData() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); // now where-clause, so we simply use null as an arguement 
    res.moveToFirst(); 
    ArrayList<Model> modelList= null; 
    while (!res.isAfterLast()) { // traverse the table 
     Type listType = new TypeToken<ArrayList<Model>>() { 
     }.getType(); 
     modelList= new Gson().fromJson(res.getString(res.getColumnIndex(JSON_STRING_KEY)), listType); 
     res.moveToNext(); 
    } 
    res.close(); 
    db.close(); 
    return modelList; 
} 

PS:どのように別のテーブルを作成するのかどうかなど、APIに由来する他の可能な応答をデータベースに格納することができます。

関連する問題