안드로이드 그누보드 DB 연동
본문
안드로이드 어플 화면안에 그누보드 회원 포인트를 뽑아서 표시 할려고 하는데 잘 안되서 질문드립니다
아래소스는 그누보드 root 폴더의 testquery.php 파일 입니다
<?php
$con=mysqli_connect("localhost","sun7684","qwer1234","sun7684");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$ID = $_GET['ID'];
$result = mysqli_query($con,"SELECT mb_point FROM g5_member where mb_id='$ID'");
$row = mysqli_fetch_array($result);
$data = $row[0];
if($data){
echo $data;
}
mysqli_close($con);
?>
인터넷 주소창에 아래처럼 아이디 지정해서 로딩하면
아래 이미지처럼 정상적으로 1200 이라는 숫자가 표시 됩니다
http://sun7684.dothome.co.kr/testquery.php?ID=admin
아래는 안드로이드 화면으로 로딩시키기 위한 안드로이드 자바 소스 파일입니다
package call.exam.jsh.appaaa;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.AsyncTask;
import android.widget.TextView;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URL;
public class zzzzzz extends AppCompatActivity {
TextView txtview;
phpdo task;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zzzzzz);
String id = "admin";
task = new phpdo();
txtview = (TextView) findViewById(R.id.txtView);
task.execute(id);
}
private class phpdo extends AsyncTask<String, Void, String> {
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... arg0) {
try {
String id = arg0[0];
String link = "http://sun7684.dothome.co.kr/testquery.php?ID=" + id ;
URL url = new URL(link);
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(link));
HttpResponse response = client.execute(request);
BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
while ((line = in.readLine()) != null) {
sb.append(line);
break;
}
in.close();
return sb.toString();
} catch (Exception e) {
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result) {
//txtview.setText("Login Successful");
txtview.setText(result);
}
}
}
이렇게 하여 빌드하면 정상적으로 빌드까지 완료가 됩니다
하지만 실행하여 보면
이런식으로 표시가 됩니다
위 문자 대신 1200 이라는 문자가 표시가 되야 하는데요
어떻게 해야 하는지 잘 모르겠어서 문의 드립니다..
도와 주세요 ㅠㅠㅠㅠ
답변 4
올리시 소스중에서
protected String doInBackground(String... arg0) {
try {
String id = arg0[0];
이부분이 좀 이상한데요
String ... arg0
으로 인자값의 선언이 되어있고,
사용은 배열인
arg0[0]으로 하셨는데 이렇게 하신게 맞나요??
그리고, link를 만드신것을 하기전에
정상적으로 출력되는 부분을 link로 걸어서 확인해보시면서
Exception이 어디서 발생하는지를 찾는게 우선입니다.
플래토님 답변 감사합니다
제가 초보자라... 제가 만든 소스가 아니라서요...
어떻게 수정을 해야 오류가 잡히는지 알고 싶습니다..
해결 했습니다.. 감사합니다..
감사합니다