我有一个从服务器获取JSON数据的应用程序。然后我将解析后的数据放入android SQLite数据库并根据需要使用数据。这一切都很好,但是,我无法找到更新整个表的方法。 场景是这个Json Data feed每周都会在服务器上更新。我有两个问题:
我缺少什么或更新SQLite表的方法是什么?(目前这只是重复数据)
public void updateTable(Product product){
SQLiteDatabase db = this.getWritableDatabase();
try{
ContentValues values = new ContentValues();
values.put(KEY_TYPE_NAME, product.getmProductTypeName());
// more columns here...
db.update(TABLE_NAME, values, null,null);
db.close();
}catch(Exception e){
Log.e("error:",e + "in updateData method")
}
什么是更新数据的理想系统?在连接到互联网时调用该方法会是一种愚蠢和不好的做法吗?
“主要活动”中的相关代码:
handler = new DBHandler(this);
NetworkUtils utils = new NetworkUtils(MainActivity.this);
if (handler.getProductCount() == 0 && utils.isConnectingToInternet()) {
new JsonDataParse().execute();
}`
相关代码“DBhandler”活动:
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE);
onCreate(db);
}
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_TYPE_NAME + " TEXT" + ")"
这基本上是我的CREATE TABLE字符串格式。我只是浓缩,因为它有16列。
这是我添加的代码,仅在有数据时才删除存储的数据:
if(handler.getProductCount() == 0) {
}else{
handler.deleteData();
}
然后我只是按照建议添加了删除方法:
public void deleteData() {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, "1", null);
}
答案 0 :(得分:0)
我不确定你的意思"更新整个表格"。听起来我只需要删除表中的数据,然后使用当前的方法添加新数据。要删除您可以使用的内容:
db.delete(TABLE_NAME, "1", null);
然后调用现有方法从服务器重新填充表。
更新数据的理想系统是什么?在连接到互联网时调用该方法会是一种愚蠢和不好的做法吗?
不,它不会是不好的做法。这是有道理的,因为如果您已经连接到互联网,您只能访问服务器。