이번에 했던 DB Term!
1) 먼저 쓰레드 처리해야함..인터넷 연결시~~ 매니페스트는 물론이고! (아래껀 임시적 쓰레드설정)
if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = newStrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);} // Thread 설정! 인터넷연결시 SDK 버전 9이상에선 꼭 설정해야함! |
2) Server 연동
핸들러안에 함수~~ 여기로 쏘는것 여기선 profname 이 primary key~ SendByHttp("정연돈", "labname","되면완전성공!"); |
private String SendByHttp(String primarykey, String attr, String msg) { if(msg == null) msg = ""; //Php URL 입력 후 연결준비 //String URL = "http://stepeagle705.pusku.com/Research.php"; String URL = "Server의 php나 Jsp파일 주소~위가 예제"; DefaultHttpClient client = new DefaultHttpClient(); try { Log.i("시작 : ","3 "); HttpPost post = new HttpPost(URL); //HttpPost 메소드로 URL에 접속! Log.i("시작 : ","3.12 "); //NmaeValuePair 리스트로 BasicNameValuePair받을준비 ->두개의 쌍을 하나의 객체에 담음 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); //리스트에 BasicNameValuePair 객체 담음 왼쪽은 DB의 column 명 오른쪽은 Value //nameValuePairs.add(new BasicNameValuePair(attr, msg)); nameValuePairs.add(new BasicNameValuePair("profname", primarykey)); //nameValuePairs.add(new BasicNameValuePair(attr, msg)); if(!attr.equals("profname")){ // 일반적으로 입력이 아닌 받아오기만 할때 방해 안되게 nameValuePairs.add(new BasicNameValuePair(attr, msg));} //post변수(URL연결변수)에 설정했던 리스트 이어주고, 인코딩형식 UTF-8로 지정. 이거 해야 php넘길 한글값 제대로 먹 post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));//넘겨주Query 인코딩지정 /* 지연시간 최대 10초 */ HttpParams params = client.getParams(); HttpConnectionParams.setConnectionTimeout(params, 6000); HttpConnectionParams.setSoTimeout(params, 6000); /* 데이터 보낸 뒤 서버에서 데이터를 받아오는 과정 */ HttpResponse response = client.execute(post); Log.i("시작 : ","3.25 "); BufferedReader bufreader = new BufferedReader( new InputStreamReader(response.getEntity().getContent(), "utf-8")); Log.i("시작 : ","4 "); String line = null; String result = ""; StringBuilder sb = new StringBuilder();//추가 while ((line = bufreader.readLine()) != null) { //result += line; sb.append(line.trim()); Log.i("시작 : ","5 "); } result = sb.toString(); bufreader.close();//추 return result; |
3) Json Parsing
String Json = SendByHttp("정연돈" , attr, sMessage); // php에 보낼 메세지 던짐과 동시에 연결 후 리턴으로 값 받아 Log.i("Json : ", Json); try{ String ResultH = "labname : \n"; String ResultM = ""; JSONArray ja = new JSONArray(Json); //Json만들고 밑에 루프 돌면서 Parsing for(int j=0; j<ja.length(); j++){ JSONObject order = ja.getJSONObject(j); ResultH += order.getString("labname"); ResultM += order.getString("address"); //getstring메소드로 column명 입력해서 값 받아 } tvH.setText(ResultH); tvM.setText(ResultM); final String temp = ResultH; // 이렇게 해야되나.. |
4) PHP 파일
<?php
$host_name = 'DB의서버주소'; $user_name = 'DB의아이디'; $user_password = 'DB의비밀번호'; $db_name = 'DB의이름';
$conn=mysql_connect($host_name, $user_name, $user_password) or die( "SQL server에 연결할 수 없습니다.");
mysql_select_db($db_name); mysql_query("SET NAMES utf8");
$college = $_POST[college]; $dept = $_POST[dept]; $profname = $_POST[profname]; $labname = $_POST[labname]; $address = $_POST[address]; $phone = $_POST[phone]; $email = $_POST[email]; $url = $_POST[url]; $part = $_POST[part]; $benefit = $_POST[benefit]; $vision = $_POST[vision]; $circumstance = $_POST[circumstance]; $reple1 = $_POST[reple1]; $reple2 = $_POST[reple2]; $reple3 = $_POST[reple3]; $reple4 = $_POST[reple4]; $reple5 = $_POST[reple5];
if(isset($college)){ $sqlAdd = "UPDATE ResearchLab SET college='$college' where profname = '$profname'"; } if(isset($dept)){ $sqlAdd = "UPDATE ResearchLab SET address='$dept' where profname = '$profname'"; } if(isset($labname)){ $sqlAdd = "UPDATE ResearchLab SET labname='$labname' where profname = '$profname"; } if(isset($labname)){ $sqlAdd = "UPDATE ResearchLab SET labname='$labname' where profname = '$profname'"; } if(isset($address)){ $sqlAdd = "UPDATE ResearchLab SET address='$address' where profname = '$profname'"; } if(isset($phone)){ $sqlAdd = "UPDATE ResearchLab SET phone='$phone' where profname = '$profname'"; } if(isset($email)){ $sqlAdd = "UPDATE ResearchLab SET email='$email' where profname = '$profname'"; } if(isset($url)){ $sqlAdd = "UPDATE ResearchLab SET url='$url' where profname = '$profname'"; } if(isset($part)){ $sqlAdd = "UPDATE ResearchLab SET part='$part' where profname = '$profname'"; } if(isset($benefit)){ $sqlAdd = "UPDATE ResearchLab SET benefit='$benefit' where profname = '$profname'"; } if(isset($vision)){ $sqlAdd = "UPDATE ResearchLab SET vision='$vision' where profname = '$profname'"; } if(isset($circumstance)){ $sqlAdd = "UPDATE ResearchLab SET circumstance='$circumstance' where profname = '$profname'"; } if(isset($reple1)){ $sqlAdd = "UPDATE ResearchLab SET reple1='$reple1' where profname = '$profname'"; } if(isset($reple2)){ $sqlAdd = "UPDATE ResearchLab SET reple2='$reple2' where profname = '$profname'"; } if(isset($reple3)){ $sqlAdd = "UPDATE ResearchLab SET reple3='$reple3' where profname = '$profname'"; } if(isset($reple4)){ $sqlAdd = "UPDATE ResearchLab SET reple4='$reple4' where profname = '$profname'"; } if(isset($reple5)){ $sqlAdd = "UPDATE ResearchLab SET reple5='$reple5' where profname = '$profname'"; }
mysql_query($sqlAdd, $conn); $sql = "select * from ResearchLab where profname = '$profname'";
$query = mysql_query($sql, $conn); while($row = mysql_fetch_assoc($query)){ $output[] = $row; } print (json_encode($output));
?> |
이상한것은 POST로 받아야 안드로이드에서 넘긴값이 디비에 들어갔다는것~ 여기서 위에서 말했듯이 profname이 primarykey로 where절에 들어감
'차근차근 > Android' 카테고리의 다른 글
Upload an Image to a PHP Scrip( phonegap 카메라로 사진 찍어서 올리기) (0) | 2014.08.21 |
---|---|
안드로이드 플랫폼 HttpPost 요청 처리 구현 (XmlPullParser) (0) | 2014.08.21 |
안드로이드/Android SDCard 기본 경로 (0) | 2014.08.21 |
안드로이드/Android Bitmap을 File로 변환하기~! (Bitmap to File) (0) | 2014.08.21 |
Bitmap, BitmapFactory 클래스와 이미지 맵핑 (0) | 2014.08.21 |