我得到的光標並將其轉換爲JSONArray(不知道如果我正確地做它的方式) 但即時通訊只爲一個表做任務。我有5張桌子。我可以爲所有5個表執行一次遊標並將它們打包在一個JSONOBject {{「tasks」,JSONArray},{「projects」,JSONArray} ....}等等。 我應該用什麼sql語句來做到這一點。我不想有很多類似的代碼。光標到JSONObject
private JSONObject sendUserData(){
// Building Parameters
// getting JSON Object
JSONArray jsonArrayTasks=null;
Cursor cursorTasks=getAllTasks();
int count=cursorTasks.getCount();
if (count>0){
jsonArrayTasks=getJSONFromCursor(cursorTasks);
}
cursorTasks.close();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", send_tag));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("tasks", jsonArrayTasks.toString()));
JSONObject json = getJsonFromURL.getJSONFromUrl(registerURL, params);
Log.i("json", json.toString());
return json;
}
private JSONArray getJSONFromCursor(Cursor cursor){
JSONArray resultSet = new JSONArray();
JSONObject returnObj = new JSONObject();
cursor.moveToFirst();
while (cursor.isAfterLast() == false) {
int totalColumn = cursor.getColumnCount();
JSONObject rowObject = new JSONObject();
for(int i=0 ; i< totalColumn ; i++)
{
if(cursor.getColumnName(i) != null)
{
try
{
if(cursor.getString(i) != null)
{
Log.d("TAG_NAME", cursor.getString(i));
rowObject.put(cursor.getColumnName(i) , cursor.getString(i));
}
else
{
rowObject.put(cursor.getColumnName(i) , "");
}
}
catch(Exception e)
{
Log.d("TAG_NAME", e.getMessage() );
}
}
}
resultSet.put(rowObject);
cursor.moveToNext();
}
cursor.close();
return resultSet;
}
private Cursor getAllTasks() {
// return database.rawQuery("SELECT * FROM "+ TABLE_TASKS_NAME +" WHERE "+KEY_CATEGORY +" = " + categoryID,null);
database=dbOpenHelper.getReadableDatabase();
String query = "SELECT * FROM " +
TABLE_TASKS_NAME +" A "
+ "," + TABLE_TAG_NAME +" B "
+ "," + TABLE_CATEGORY_NAME+" C "
+ "," + TABLE_PROJECTS_NAME+" D "
;
Log.d("Test query","Test query :"+query);
Cursor test = database.rawQuery(query
, null);
return test; //!!!!!!
}
要整個光標轉換成JSON,爲什麼呢? – pskink
我想我的代碼看起來很漂亮 –
對不起,我不明白 – pskink