2010-11-24 7 views
1

나는 원격 데이터베이스에서 일부 데이터를 가져 오는 응용 프로그램이 있습니다. 다음 코드로 PHP를 사용하여 데이터베이스에 연결합니다.안드로이드 MySQL의 PHP 문제

mysql_connect($host,$username,$password) or die("no connection"); 
@mysql_select_db($database) or die("Unable to select database"); 

$query = $_REQUEST['query']; 
$q=mysql_query($query); 

while($e=mysql_fetch_assoc($q)) { 
    $output[]=$e; 
} 
print(json_encode($output)); 

mysql_close(); 

그때 자바 코드를 다음을 통해 연결

난이 에뮬레이터와 함께 잘 작동하지만 내가 문제 때이

public void query(String query){ 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("query", query)); 
     connect(nameValuePairs); 
    } 

를 통해 쿼리를 만드는 것이했을

public void connect(ArrayList<NameValuePair> nameValuePairs) { 
     result = ""; 
     InputStream is = null; 

     String url = "http://'ipadress'/PhpProject1/EmptyPHP.php"; 

     //Get the content 
     try { 
      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 

      is = httpEntity.getContent(); 
     } catch (Exception e) { 
      Log.e("Connect", "Error in http connection " + e.toString()); 
     } 
     //Convert content toString 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, HTTP.UTF_8), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 

      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      result = sb.toString(); 
      //result = replaceString(sb.toString()); 
     } catch (Exception e) { 
      Log.e("Connect", "Error converting result " + e.toString()); 
     } 
    } 

전화로 그것을 사용합니다.

누구나 이것이 이유가 무엇입니까?

는 실제로 서버에 액세스 할 수 있도록 개인 네트워크에 실제 장치를 연결해야합니다 사전

+0

발생한 문제를 설명해주십시오. –

+0

어떤 예외가 있습니까? – Pentium10

+0

예외가 없습니다. 에뮬레이터를 사용할 때 쿼리가 곧바로 진행되지만 전화를 사용할 때 검정색 표시가 나타납니다. 그것을 테스트하기 나는 setText (queryResult)를 사용하는 TextView 만 있지만 아무 것도 전화기에 표시되지 않습니다. – Bastaix

답변

0

에 감사드립니다.

가장 쉬운 옵션은 서버와 동일한 서브넷에있는 WiFi 네트워크입니다. 그렇지 않으면 휴대 전화는 공개되지 않으므로 네트워크에 액세스 할 수 없습니다.