Android 随意向sqlite加载数据
我正在使用Android 随意向sqlite加载数据,android,json,sqlite,Android,Json,Sqlite,我正在使用Volley将JSON字符串加载到SQLite,但我面临的问题是Volley随机填充SQLite字段,一次一个字段带有JSON,第二次相同字段为空 我正在考虑实现进度对话框,也许UI线程可以停止Volley,但我不确定 我的方法: private void loadJsonToSQLite() { RequestQueue queue = Volley.newRequestQueue(this); mDB = this.openOrCreateDatabase(Cons
Volley
将JSON
字符串加载到SQLite
,但我面临的问题是Volley
随机填充SQLite
字段,一次一个字段带有JSON
,第二次相同字段为空
我正在考虑实现进度对话框,也许UI
线程可以停止Volley
,但我不确定
我的方法:
private void loadJsonToSQLite() {
RequestQueue queue = Volley.newRequestQueue(this);
mDB = this.openOrCreateDatabase(Constants.DATABASE_NAME, MODE_PRIVATE, null);
for (int i = 0; i < routeArray.length; i++) {
if (!mDB.isOpen()) {
mDB = getApplicationContext().openOrCreateDatabase(Constants.DATABASE_NAME, MODE_PRIVATE, null);
}
final String urlPart = routeArray[i];
final String urlPartReverse = routeArrayReverse[i];
final String tableName = "[" + urlPart + "]";
mDB.execSQL("CREATE TABLE " + tableName + " (keyId INTEGER PRIMARY KEY, route TEXT, routeReverse TEXT)");
StringRequest stringRequest = new StringRequest(Request.Method.GET, url + urlPart,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Matcher m = MY_PATTERN.matcher(response);
if (m.find()) {
String extracted = m.group(1).trim();
ContentValues initialValues = new ContentValues();
initialValues.put("keyId", 1);
initialValues.put("route", extracted);
if (!mDB.isOpen()) {
mDB = getApplicationContext().openOrCreateDatabase(Constants.DATABASE_NAME, MODE_PRIVATE, null);
}
mDB.insert(tableName, null, initialValues);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(stringRequest);
mDB.close();
StringRequest stringRequestReverse = new StringRequest(Request.Method.GET, url + urlPartReverse,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Matcher m = MY_PATTERN.matcher(response);
if (m.find()) {
String extracted = m.group(1).trim();
ContentValues initialValues = new ContentValues();
initialValues.put("routeReverse", extracted);
if (!mDB.isOpen()) {
mDB = getApplicationContext().openOrCreateDatabase(Constants.DATABASE_NAME, MODE_PRIVATE, null);
}
mDB.update(tableName,initialValues,null,null);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(stringRequestReverse);
mDB.close();
}
}
private void loadJsonToSQLite(){
RequestQueue=Volley.newRequestQueue(this);
mDB=this.openOrCreateDatabase(Constants.DATABASE\u NAME,MODE\u PRIVATE,null);
对于(int i=0;i
也许我的凌空抽射有些地方错了
我在不同的链接中有
JSON
字符串结尾,因此我使用循环。自己解决它,只需添加第二个循环,正如我所理解的,2个截击
请求可以存在于一个循环中