이 글을 읽기 전에 다음 2개의 글을 읽어주세요.

"안드로이드 DB CRUD(쓰기, 읽기, 수정, 삭제) 1 - 프로세스" - http://ilbbang.tistory.com/34
"안드로이드 DB CRUD(쓰기, 읽기, 수정, 삭제) 2 - MariaDB 설정하기" - http://ilbbang.tistory.com/45

제가 따라해 볼 원문을 다시 확인해 보겠습니다.(출처)
http://freeprojectcode.com/android/android-mysql-basic-crud-operation-tutorial-for-android-studio-project/

이전단계에서 MariaDB 설정을 완료했으면 다음 단계는 PHP 서버 프로그래밍으로 쿼리문을 실행할 수 있게 하겠습니다. 안드로이드에서는 서비스DB에 직접 접근할 수 없습니다. 이전에는 Mysql에서 제공하는 dbconnector를 import 해서 접근이 가능했지만 이 기능은 더이상 사용이 불가능하다고 합니다. 그래서 중간에 PHP 또는 Node.js 와 같은 서버 프로그래밍을 활용하여 간접적으로 DB에 접근이 가능합니다. Node.js가 더 신기술이긴 소규모 서비스를 위한 비용을 고려했을 때 PHP가 더 저렴하다고 판단하였기 때문에 PHP를 선택하였습니다.

저는 cafe24 사이드를 사용중입니다. node.js가 더 저렴한 곳이 있다면 댓글 남겨주세요.

이번 단계에서 만들 php 파일은 총 6개 입니다. (테스트용 파일 제외)

파일1. db_config.php
파일2. addEmp.php
파일3. getEmp.php
파일4. getAllEmp.php
파일5. updateEmp.php
파일6. deleteEmp.php

파일 별 설명 및 코드를 살펴보겠습니다.

파일1은 Maria DB를 접속하기 위한 파일입니다. 이 파일이 없다면 나머지 파일에 동일하게 접속할 수 있는 코드를 만들면 되지만, 이 경우 정보가 변경되었을 때 번거롭기 때문에 하나의 파일로 관리합니다.

파일1. db_config.php
<?php

 //DB 정보를 입력합니다
 define('HOST','IP또는HOSTNAME:PORT(생략시3306)');
 define('USER','사용자ID');
 define('PASS','암호');
 define('DB','DB이름');
 
 //DB에 접속합니다.
 $con = mysqli_connect(HOST,USER,PASS,DB) or die('DB에 연결할 수 없습니다.');
?>
이 파일을 다른 파일에서 require_once 명령어로 불러오면 $con 변수에 접속 스크립트가 실행되여 DB에 접속이 가능합니다. 접속이 안 될 경우에는 'DB에 연결할 수 없습니다.' 문구를 출력하고 접속이 되지 않습니다.

파일2는 DB에 자료를 입력하기 위한 파일입니다. 이름(name), 직함(designation), 급여(salary) 정보를 post 방식으로 보내면 이 파일에서 쿼리문을 실행해 DB에 입력합니다.

파일2. addEmp.php
<?php 
        // POST 방식일 경우에만 코드가 실행됩니다.
	if($_SERVER['REQUEST_METHOD']=='POST'){
		
		//POST로 보낸 값을 받아서 변수에 입력합니다.
		$name = $_POST['name'];
		$desg = $_POST['designation'];
		$sal = $_POST['salary'];
		
		//받아온 값을 입력 값으로 지정한 INSERT 쿼리문을 작성합니다.
		$sql = "INSERT INTO employee (name, designation, salary) VALUES ('$name','$desg','$sal')";
		
		//DB 접속 스크립트를 불러옵니다.
		require_once('db_config.php');
		
		//쿼리문을 실행합니다.
		if(mysqli_query($con,$sql)){

// 입력 성공 시 아래 내용을 출력합니다. echo '종업원 정보가 성공적으로 입력되었습니다.';

}else{

// 입력 실패 시 아래 내용을 출력합니다. echo '종업원 정보를 입력할 수 없습니다.'; } //접속을 종료합니다. mysqli_close($con); }else{

// POST 방식이 아니면 아래 내용을 출력합니다. echo 'Post Request 가 아닙니다.'; } ?>

파일3과 파일4는 DB의 자료를 읽어오기 위한 파일입니다. 읽어온 자료를 json 형식으로 변환해서 화면에 출력해 줍니다.
파일3은 단일 레코드의 정보를 가져옵니다. 검색 조건은 id 입니다. 파일4는 모든 레코드의 정보를 가져옵니다.

파일3. getEmp.php

<?php 
	
	//POST로 보낸 id 값을 받아서 변수에 입력합니다.
	$id = $_POST['id'];
	
	//DB 접속 스크립트를 불러옵니다.
	require_once('db_config.php');
	
	//받아온 id를 검색 조건으로 특정 종업원의 정보를 불러오는 쿼리문을 작성합니다.
	$sql = "SELECT * FROM employee WHERE id=$id";
	
	//쿼리문을 실행합니다. 결과를 r 변수에 저장합니다.
	$r = mysqli_query($con,$sql);
	
	// r 변수의 내용을 array 형식으로 내보내 result 변수에 저장합니다.
	$result = array();
	$row = mysqli_fetch_array($r);
	array_push($result,array(
			"id"=>$row['id'],
			"name"=>$row['name'],
			"desg"=>$row['designation'],
			"salary"=>$row['salary']
		));

	//저장된 result 변수를 json 형식으로 출력합니다.
	echo json_encode(array('result'=>$result), JSON_PRETTY_PRINT+JSON_UNESCAPED_UNICODE);
	

//접속을 종료합니다. mysqli_close($con); ?>

파일4. getAllEmp.php

<?php 
	//DB 접속 스크립트를 불러옵니다.
	require_once('db_config.php');
	
	//전체 종업원의 정보를 불러오는 쿼리문을 작성합니다.
	$sql = "SELECT * FROM employee";
	
	//쿼리문을 실행합니다. 결과를 r 변수에 저장합니다.
	$r = mysqli_query($con,$sql);
	
	// result 변수의 유형을 array 로 정의합니다.
	$result = array();
	
	// 모든 레코드에 대하여 while 문으로 반복 처리를 수행합니다.
	while($row = mysqli_fetch_array($r)){
		
		// r 변수의 내용을 array 형식으로 내보내 result 변수에 저장합니다.
		array_push($result,array(
			"id"=>$row['id'],
			"name"=>$row['name'],
                        "designation"=>$row['designation'],
                        "salary"=>$row['salary']
		));
	}
	
	//저장된 result 변수를 json 형식으로 출력합니다.
	echo json_encode(array('result'=>$result), JSON_PRETTY_PRINT+JSON_UNESCAPED_UNICODE);
	

//접속을 종료합니다. mysqli_close($con); ?>

파일5는 DB의 자료를 수정하기 위한 파일입니다. 검색 조건은 id 입니다. id, 이름(name), 직함(designation), 급여(salary) 정보를 post 방식으로 보내면 이 파일에서 쿼리문을 실행해 자료를 수정합니다.

파일5. updateEmp.php

<?php 
	if($_SERVER['REQUEST_METHOD']=='POST'){
		//POST로 보낸 값을 받아서 변수에 입력합니다.
		$id = $_POST['id'];
		$name = $_POST['name'];
		$desg = $_POST['designation'];
$sal = $_POST['salary']; //DB 접속 스크립트를 불러옵니다. require_once('db_config.php'); //특정 종업원의 정보를 수정하는 쿼리문을 작성합니다. $sql = "UPDATE employee SET name = '$name', designation = '$desg', salary = '$sal' WHERE id = $id;"; //Updating database table if(mysqli_query($con,$sql)){ // 수정 성공 시 아래 내용을 출력합니다. echo '종업원 정보가 성공적으로 수정되었습니다.'; }else{ // 수정 실패 시 아래 내용을 출력합니다. echo '종업원 정보를 수정할 수 없습니다.'; } //접속을 종료합니다. mysqli_close($con); } ?>

파일6은 DB의 자료를 삭제하기 위한 파일입니다. 검색조건은 id 입니다. id 정보를 post 파일로 보내면 이 파일에서 쿼리문을 실행해 해당 자료를 삭제합니다.

파일6. deleteEmp.php

<?php 
   // POST 방식일 경우에만 코드가 실행됩니다.
   if(isset($_POST['id'])){
	//POST로 보낸 id 값을 받아서 변수에 입력합니다.
	$id = $_POST['id'];
	
	//DB 접속 스크립트를 불러옵니다.
	require_once('db_config.php');
	
	//특정 종업원의 정보를 삭제하는 쿼리문을 작성합니다.
	$sql = "DELETE FROM employee WHERE id=$id;";
	
	//쿼리문을 실행합니다.
	if(mysqli_query($con,$sql)){
                // 삭제 성공 시 아래 내용을 출력합니다. 
		echo '종업원 정보가 성공적으로 삭제되었습니다.';
	}else{
                // 삭제 실패 시 아래 내용을 출력합니다. 
		echo '종업원 정보를 삭제할 수 없습니다.';
	}
	
	//접속을 종료합니다.
	mysqli_close($con);
   }else{
        // POST 방식이 아니면 아래 내용을 출력합니다.
        echo 'Post Request 가 아닙니다.';
   }
?>

예제 파일이어서 그대로 진행하지만 post 로 보낼때 변수 값을 더 지정한다면 파일을 여러개 만들 필요가 없다고 생각합니다.
시간이 되신다면 dbconfig.php, crudEmp.php 파일 두개로 진행할 수 있는 방법을 생각해 보세요.

이제 안드로이드에서 php 파일에 접속하여 MariaDB에 CRUD(쓰기, 읽기, 수정, 삭제)를 수행해 보겠습니다. 아래 링크를 클릭해 주세요

"안드로이드 DB CRUD(쓰기, 읽기, 수정, 삭제) 4 - Android 화면 및 구현하기" - http://ilbbang.tistory.com/52

감사합니다.

+ Recent posts