2014-08-28 3 views
1

Я знаю, как получить значение, одну строку или несколько строк из базы данных MySQL в Android-приложение через JSON. Но как я могу добавить значение к результату, которое говорит мне, был ли запрос в порядке или нет, а пока нет, добавьте что-то вроде кодов ошибок?Как добавить «коды ошибок»?

Это мой код прямо сейчас: PHP

$result = mysqli_query($con,"SELECT Role, age FROM table1"); 
$json = array(); 
while($row = mysqli_fetch_array($result)){ 
    $json[] = $row; 
} 
mysqli_close($con); 
print json_encode($json); 

Android

 try{ 
      JSONArray jArray = new JSONArray(result); 
      for(int i=0;i<jArray.length();i++){ 
       JSONObject json_data = jArray.getJSONObject(i); 
       Log.i("log_tag","age: " + json_data.getString("age") + 
           ", role: "+json_data.getString("Role")); 
      } 
     } 
     catch(JSONException e){ 
       Log.e("log_tag", "Error parsing data "+e.toString()); 
     } 

Сейчас, например, запрос не является успешным, если нет каких-либо пользователей в базе данных. В этом случае я хочу получить ошибку, что что-то не так, и что-то вроде кодов ошибок, которые говорят мне, что на самом деле неправильно. В противном случае я получаю «ОК-сообщение» и результат. Как я могу это сделать?

Я знаю, что для этого примера я мог бы сделать это просто, подсчитав значения в приложении Android, но мне нужно, чтобы что-то более сложное, как ошибки в регистрационной форме.

Надеюсь, вы понимаете, что я имею в виду :) Спасибо!

ответ

1

Первый, определяют JSON схемы/структуры - которая является частью API и договора должны быть документально. После этого большинство будет «вписываться в место», и это станет упражнением в базовом программировании.

Например, для примера договор определение;

{ 
    status:   - string of "success" or "fail" 
    errorMessage: - optional, an error message 
    results: [..] - array of results (always empty on non-OK status), where 
        - each result is an array of the form [role, age] 
} 

Затем создайте результат JSON к подходят договор;

$result = mysqli_query($con,"SELECT Role, age FROM table1"); 

$resp = array(); 
if ($result) { 
    // Good, also add results 
    $resp["status"] = "success"; 

    $results = array(); 
    while($row = mysqli_fetch_array($result)){ 
    $results[] = $row; 
    } 
    $resp["results"] = $results; 
} else { 
    // No good! 
    $resp["status"] = "fail"; 

    $resp["errorMessage"] = "Database query failed"; 
    // Or if this is desired to be exposed (only for development!) 
    // $resp["errorMessage"] = mysqli_error($con); 

    // No results, but keep empty JSON array to make JSON access more consistent 
    $resp["results"] = array();  
} 
mysqli_close($con); 

print json_encode($resp); 

Затем обновите клиент Android, чтобы принять эту новую структуру JSON. Он должен быть адаптирован для включения дополнительного уровня, сначала проверяя status (это «успех»?). Если все в порядке, используйте массив results. Если не отображается errorMessage или иным образом информировать пользователя о проблеме. Также обратите внимание, что запрос может быть «успехом», даже если результаты не были возвращены.

Время только исключение должно быть брошено есть, если JSON является неправильно обрабатываются - все остальное должно быть обработано с надлежащей проверки стоимости и условными.

+0

Большое спасибо! Думаю, я понял это :) – honiahaka10

Смежные вопросы