2012-08-16 69 views
0

我連接我的android到MySQL數據庫,它工作正常。我用一個php文件來連接數據庫並進行查詢。 現在我想顯示來自同一個數據庫的不同表格的數據。我想我必須調用函數讀取,但我不知道如何刮削數據。 也許用Web服務做起來更容易或更好? 這是我從另一個職位如何從Android的不同表中讀取MYSQL數據庫?

package com.example.onlinetestactivity; 

import java.io.IOException; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    TextView resultView; 
    HttpClient client; 
    JSONObject json; 
    String Dat; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     resultView = (TextView) findViewById(R.id.tvjson); 
     client = new DefaultHttpClient(); 
     try { 
      json = RedData(); 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     Dat = json.toString(); 

     new Read().onPostExecute(Dat); 
    } 
    public JSONObject RedData() throws ClientProtocolException, IOException, JSONException { 

     HttpPost httppost = new HttpPost("http://file.php");  
     HttpResponse r = client.execute(httppost); 

     HttpEntity e = r.getEntity(); 
     String data = EntityUtils.toString(e); 
     JSONArray jArray = new JSONArray(data); 
     JSONObject last = jArray.getJSONObject(0); 
     return last; 


    } 


    public class Read extends AsyncTask<String, Integer, String> { 

     @Override 
     protected String doInBackground(String... arg0) { 
      // TODO Auto-generated method stub 
      try { 
       json = RedData(); 
       //Toast.makeText(OnlineTestActivity.this, json.getString(arg0[0]), Toast.LENGTH_LONG); 
       return json.getString(arg0[0]); 

      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String data) { 
      // TODO Auto-generated method stub 
      resultView.setText(data); 
     } 
    } 
} 

使用的代碼,這是PHP文件

<?php 
header('Content-type: application/json'); 

$server = "XXXXXXXX"; 
$username = "XXXXXXX"; 
$password = "XXXXXXXX"; 
$database = "XXXXXXX"; 

$con = mysql_connect($server, $username, $password) or die ("No se puede conectar: " . mysql_error()); 

$db_selected = mysql_select_db($database, $con); 
if (!$db_selected) 
{ 
    die ("Error al seleccionar la Base de datos: " . mysql_error()); 
} 

$sql = "select XXXXXXXXXXX)"; 
$result = mysql_query($sql) or die ("Query error: " . mysql_error()); 

$records = array(); 

while($row = mysql_fetch_assoc($result)) { 
    $records[] = $row; 
} 

mysql_close($con); 

print(json_encode($records)); 
?> 

謝謝大家

回答

0

的問題是在PHP文件:前

print(json_encode($records)); 

得走

mysql_close($con); 

JSON couldn't明白這一點,它失敗,但改變順序正常工作

0

退房的Link。 AsyncTask可以被忽略,如那裏的例子所示。

+0

非常感謝你這個例子很多Rishi。 – Ivan 2012-08-24 15:09:30

相關問題