2012-03-03 75 views
0

我试图用php脚本连接到MySQL DB。但我没有得到任何输出只有异常代码。我无法弄清楚问题出在哪里。我使用了教程代码。Android,使用PHP连接到MySQL

private EditText outputStream; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    String result = null; 
    InputStream input = null; 
    StringBuilder sbuilder = null; 
    outputStream = (EditText)findViewById(R.id.output); 
    ArrayList <NameValuePair> nameValuePairs = new ArrayList <NameValuePair>(); 

    try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://ik.su.lt/~jbarzelis/Bandymas/index.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     input = entity.getContent(); 
    } 
    catch(Exception e){ 
     Log.e("log_tag","Error in internet connection"+e.toString()); 
    } 
    try{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(input,"iso-8859-1"),8); 
     sbuilder = new StringBuilder(); 

     String line = null; 

     while((line = reader.readLine()) != null){ 
      sbuilder.append(line + "\n"); 
      System.out.println(line); 
     } 
     input.close(); 
     result = sbuilder.toString(); 
    } 
    catch(Exception e){ 
     Log.e("log_tag", "Error converting result "+e.toString());   
    } 
    int fd_id; 
    String fd_name; 
    try{ 
     JSONArray jArray = new JSONArray(result); 
     JSONObject json_data = null; 
     for(int i=0;i<jArray.length();i++){ 
      json_data = jArray.getJSONObject(i); 
      fd_id = json_data.getInt("FOOD_ID"); 
      fd_name = json_data.getString("FOOD_NAME"); 
      outputStream.append(fd_id +" " + fd_name + "\n"); 
     } 


     } 
    catch(JSONException e1){ 
     Toast.makeText(getBaseContext(), "No food found", Toast.LENGTH_LONG).show(); 
    } 
    catch(ParseException e1){ 
     e1.printStackTrace(); 
    } 
} 

PHP脚本:

<?php 
mysql_connect("localhost","**********","******"); 
mysql_select_db("test"); 
$sql = mysql_query("select FOOD_NAME as 'Maistas' from FOOD where FOOD_NAME like 'A%'"); 
while($row = mysql_fetch_assoc($sql)) $output[]=$row; 
print(json_encode($output)); 
mysql_close; 

>

任何想法如何解决这个问题?

+1

和什么异常会是?如果它从PHP的例外是什么,这与你的Android代码的待办事项?如果它的Java异常形式android的php部分是没用的... – Rufinus 2012-03-03 17:24:14

+0

异常,说没有找到食物 – Shien 2012-03-03 17:47:58

+0

03-03 20:08:35.182:DEBUG/SntpClient(40):请求时间失败:java.net.SocketException :地址族不支持协议 这可能是一个主要问题? – Shien 2012-03-03 18:09:52

回答

0

首先,不使用Exception.toString(),使用Exception.printStackTrace():

catch (Exception e) { 
    e.printStackTrace(); 
} 

其次,在你的PHP代码,你不检查任何错误。如果发生任何错误,我建议你发出不同的HTTP状态代码(如400),那么,在你的Android代码:

if (response.getStatusLine().getStatusCode() != 200) { 
    Log.d("MyApp", "Server encountered an error.); 
} 

这样,你就会知道,如果事情发生在服务器上。

希望这有助于