2013-04-04 140 views
1

我有以下代码,我努力让它工作。在java文件中有2个错误,我找不到修复程序。Android和PHP连接到MySQL数据库

这里是我的MySQLData.java文件

package com.example.qosmetre2; 
import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.net.ParseException; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class MySQLData extends ListActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    String result = null; 
    InputStream is = null; 
    StringBuilder sb=null; 
    String result=null; 
    //http post 

    try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://localhost/android_test/fetch_data2.php"); 
     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()); 
    } 

    //convert response to string 

    try{ 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
     sb = new StringBuilder(); 
     sb.append(reader.readLine() + "\n"); 
     String line="0"; 
     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()); 
    } 
    //paring data 

    String nam; 
    int rec_pow; 
    int tow; 
    int stat; 

    try{ 
    JSONArray jArray = new JSONArray(result); 
    JSONObject json_data=null; 

    for(int i=0;i<jArray.length();i++){ 
      json_data = jArray.getJSONObject(i); 
      nam=json_data.getString("name"); 
      rec_pow=json_data.getInt("recieved_power"); 
      tow=json_data.getInt("tower"); 
      stat=json_data.getInt("status"); 

    } 

    }catch(JSONException e1){ 
     Toast.makeText(getBaseContext(), "Could not Parse Data", Toast.LENGTH_LONG).show(); 
    }catch (ParseException e1){ 
     e1.printStackTrace(); 

    } 

} 

} 

有以下2行错误:

String result=null; 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

的第一个错误说重复的局部变量的结果,第二个错误说namevaluepairs中无法解析为变量。

我也有一个php文件,我把我的wamp服务器,我想在我的本地服务器上显示的infro这是在应用程序中。我在某处阅读我可能不得不向前移动,以便通过互联网访问应用程序,但我不知道。该应用程序不会运行,直到错误得到解决。

这是我的PHP文件fetch_data2.php

<?php 
mysql_connect("888888","8888888","*******"); 
mysql_select_db("*******"); 
$q=mysql_query("SELECT * FROM users"); 


while($row=mysql_fetch_assoc($q)) 
$output[]=$row; 

    print(json_encode($output)); 

    mysql_close(); 

?> 
+0

您用于Java的IDE是什么IDE?一个体面的人会强调重复和未定义的变量。 – devnate 2013-04-04 23:57:24

回答

2

在审查你的代码,我也看到变量定义结果两次,我没有看到任何地方定义namevaluepairs中。我认为编译器是正确的:})