2013-04-04 139 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中。我認爲編譯器是正確的:})