在android中从数据库中获取时复制数据(duplicating data when fetch from database in android)

编程入门 行业动态 更新时间:2024-10-25 08:20:03
在android中从数据库中获取时复制数据(duplicating data when fetch from database in android)

嘿伙计们我正在研究数据库首先我从json获取数据并在网络不可用之后插入数据库然后从数据库中显示值它们是好的但是当从数据库值中获取数据时是重复的

代码就是活动

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(); }

数据库是

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; }

hey guys i am working on database first i am fetching data from json and insert in database after when network is not available then display value from database their is going good but when fetching data from database values is duplicating

code is activity

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); } }

and inserting value in database

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(); }

database is

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; }

最满意答案

尝试在插入之前删除db表。

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(); }

Try to delete the db Table before inserting.

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(); }

更多推荐

本文发布于:2023-04-29 04:25:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1335247.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库中   数据   android   duplicating   database

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!