2016-07-25 4 views
0

ちょっと私はデータベースに取り組んでいます。私はjsonからデータをフェッチしています。ネットワークが利用できないときにデータベースに挿入してからデータベースの値を表示します。値は、データベース内のアクティビティandroidのデータベースからフェッチするときのデータの複製

NetworkUtils utils = new NetworkUtils(getApplicationContext()); 
    if(utils.isConnectingToInternet()) 
    { 
     getSpinnerData(); 
    } 
    else 
    { 
     List<VideoJson> videoList = db.getAllVideos(); 
     Log.e("List is","=> "+videoList); 
     adapter = new VideoAdapter(videoList, this); 
     recyclerView.setAdapter(adapter); 
    } 
} 

と挿入値

コードされる複製され

private void parseData(JSONArray array) { 
    for (int i = 0; i < array.length(); i++) { 
     VideoJson model = new VideoJson(); 
     JSONObject json = null; 
     try { 
      json = array.getJSONObject(i); 
      String vedio_name = json.getString(Config.TAG_VIDEO_TEXT); 
      String vedio_url = json.getString(Config.TAG_VIDEO_URL); 
      String vedio_img = json.getString(Config.TAG_VIDEO_IMAGE); 
      model.setName_video(vedio_name); 
      model.setImageUrl_video(vedio_url); 
      model.setVedio_thambnail(vedio_img); 
      Log.e("name","is =>"+vedio_name); 
      Log.e("url","is =>"+vedio_url); 
      Log.e("image","is =>"+vedio_img); 
      db.addVideos(model); 
      Log.e("database","value is"+db); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

データベースには、挿入する前に、DBテーブルを削除しよう

public class VideoDataBase extends SQLiteOpenHelper { 

    private static final int DB_VERSION = 4; 
    private static final String DB_NAME = "appname"; 
    private static final String TABLE_VIDEOS= "videos"; 

private static final String KEY_VIDEO_ID = "video_id"; 
private static final String KEY_VIDEO_NAME = "video_id_text"; 
private static final String KEY_VIDEO_URL ="video_id_url"; 
private static final String KEY_VIDEO_THUMBNAIL ="video_thumb"; 



private static final String CREATE_TABLE_VIDEO = "CREATE TABLE " 
      + TABLE_VIDEOS 
      + " (" 
      + KEY_VIDEO_ID + " INTEGER PRIMARY KEY, " 
      + KEY_VIDEO_NAME + " TEXT, " 
      + KEY_VIDEO_URL + " TEXT, " 
      + KEY_VIDEO_THUMBNAIL + " TEXT) "; 
    public VideoDataBase(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREATE_TABLE_VIDEO); 
     Log.e("table name","==>"+CREATE_TABLE_VIDEO); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TextDataBase.class.getName(), 
       "Upgrading database from version " + oldVersion + " to " 
         + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS "+TABLE_VIDEOS); 
     onCreate(db); 
    } 

public void addVideos(VideoJson model){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
     try{ 
      ContentValues values = new ContentValues(); 
      values.put(KEY_VIDEO_NAME, model.getName_video()); 
      values.put(KEY_VIDEO_URL, model.getImageUrl_video()); 
      values.put(KEY_VIDEO_THUMBNAIL, model.getVedio_thambnail()); 
      db.insert(TABLE_VIDEOS, null, values); 
      Log.e("this db","value is"+values); 
      db.close(); 
     }catch (Exception e){ 
      Log.e("problem",e+""); 
     } 
} 

    public List<VideoJson> getAllVideos() { 
     SQLiteDatabase db = this.getReadableDatabase(); 
     List<VideoJson> videoList = null; 
     try{ 
      videoList = new ArrayList<VideoJson>(); 
      String QUERY = "SELECT * FROM "+TABLE_VIDEOS; 
      Cursor cursor = db.rawQuery(QUERY, null); 
      if(!cursor.isLast()) 
      { 
       while (cursor.moveToNext()) 
       { 
        VideoJson videolist = new VideoJson(); 
        videolist.setVideo_id(cursor.getInt(0)); 
        videolist.setName_video(cursor.getString(1)); 
        videolist.setImageUrl_video(cursor.getString(2)); 
        videolist.setVedio_thambnail(cursor.getString(3)); 

        videoList.add(videolist); 
       } 
      } 
      db.close(); 
     }catch (Exception e){ 
      Log.e("error",e+""); 
     } 
     return videoList; 
    } 

答えて

0

です。

private void parseData(JSONArray array) { 

db.deleteTABLE_VIDEOS(); 

for (int i = 0; i < array.length(); i++) { 
    VideoJson model = new VideoJson(); 
    JSONObject json = null; 
    try { 
     json = array.getJSONObject(i); 
     String vedio_name = json.getString(Config.TAG_VIDEO_TEXT); 
     String vedio_url = json.getString(Config.TAG_VIDEO_URL); 
     String vedio_img = json.getString(Config.TAG_VIDEO_IMAGE); 
     model.setName_video(vedio_name); 
     model.setImageUrl_video(vedio_url); 
     model.setVedio_thambnail(vedio_img); 
     Log.e("name","is =>"+vedio_name); 
     Log.e("url","is =>"+vedio_url); 
     Log.e("image","is =>"+vedio_img); 
     db.addVideos(model); 
     Log.e("database","value is"+db); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+0

これは、jsonが最初にロードテーブルが削除されたときを意味します。 – newdeveloper

+0

はい、それ以外の場合は、テーブルデータが繰り返されます。 – Andolasoft

+0

データベースで削除クエリを作成する方法を教えてください。 – newdeveloper

関連する問題