2013-04-09 6 views
1

Я делаю приложение для Android, и я пытаюсь получить данные из удаленной базы данных.Geting данные из удаленной базы данных Android

Мой вопрос в том, как я могу проверить, содержит ли результат запроса данные и не пуст?

Я использую JSON, но я новичок в этом. Вот мой код:

public class MainActivity extends Activity { 

    private TextView txt; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     LinearLayout rootLayout = new LinearLayout(getApplicationContext()); 
     txt = new TextView(getApplicationContext()); 
     rootLayout.addView(txt); 
     setContentView(rootLayout); 

     txt.setText("Connexion..."); 
     txt.setText(getServerData(strURL)); 

    } 

    public static final String strURL = "http://.../marecherche/adresse.php"; 

    private String getServerData(String returnString) { 
     InputStream is = null; 
     String result = ""; 

     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("adresse","adr casa")); 

     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost(strURL); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
     }catch(Exception e){ 

      Log.e("log_tag", "Error in http connection " + e.toString()); 
     } 

     try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      result=sb.toString(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error converting result " + e.toString()); 
     } 

     try{ 


      JSONArray jArray = new JSONArray(result); 
      for(int i=0;i<jArray.length();i++){ 
       JSONObject json_data = jArray.getJSONObject(i); 

       Log.i("log_tag","raison sociale: "+json_data.getString("raison_social")+ 
         ", Adresse: "+json_data.getString("adresse") 
         ); 

       returnString += "\n\t" + jArray.getJSONObject(i); 
      } 
     }catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data " + e.toString()); 
     } 
     return returnString; 
    } 
} 

и файл PHP:

<?php 
mysql_connect("localhost", "root", "passwd"); 
mysql_select_db("dbname"); 
$mots = explode(' ', $_REQUEST['adresse']); 
$like = array(); 
foreach ($mots AS $mot) { 
    $like[] = ' "%' . mysql_real_escape_string($mot) . '%" '; 
} 

$condition = implode(' OR adresse LIKE ', $like); 

$sql = mysql_query("SELECT * FROM entreprise WHERE adresse like " . $condition); 
while ($row = mysql_fetch_assoc($sql)) 
    $output[] = $row; 
print(json_encode($output)); 
mysql_close(); 
?> 

ответ

0

My question is how can I check if the query result contains data and is not empty?

=> Проверить result строка пустой или нет, прежде чем создавать JSONArray.

1

Вы можете просто создать свое собственное возвращение, чтобы проверить, что-то как:

PHP файл:

if (is_array($output)) { 
    print(json_encode($output)); 
} else 
    echo "empty"; 
} 

Java:

if (result.equals("empty")) { 
    return; 
} 
JSONArray jArray = new JSONArray(result); 
// etc 
+0

спасибо за ответ, itried что но он дает мне ошибку: –

+0

спасибо за ответ, он работает, но для теста: if (is_array ($ output)) всегда верно, i изменил его на! empty ($ output), спасибо большое –

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