Game Engine/Unity (유니티)

Unity에서 SQLite 사용하기 (Windows) - 2

은연일체 2021. 11. 18. 15:30

아래 글에서 이어지는 내용이다.

 

Unity에서 SQLite 사용하기 (Windows) - 1

Unity와 MySQL을 연동하는 방법은 아래 링크를 참고하길 바란다. Unity에서 MySQL 사용하기 (Windows) - 1 Unity에서 데이터베이스를 사용하기 위해 여러 가지 시도를 해봤지만 DLL 파일의 여러 가지 문제로

foreverhappiness.tistory.com

 

 

PHP와 SQLite3 연동 확인

 

아래 PHP 코드를 입력하여 이전 글에서 만들었던 DB 파일과 같은 경로에 넣어준다.

나는 dbTest.php 이름으로 만들었다.

 

<?php
phpinfo()
?>

 

http://localhost/sqlite3/dbtest.php 로 접속했을 때 아래와 같은 화면이 나온다면 php와 Apache 연동은 확인한 것이다.

 

 

이제는 php와 SQLite와의 연동이 잘 되었는지 확인하기 phpinfo에서 아래 내용이 있는지 확인한다.

 

 

혹시나 PHP 7.4버전을 사용하고 있으면서 pde_sqlite와 sqplite3가 확인이 안 된다면 아래 링크를 확인할 필요가 있다.

무슨 이유에서인지는 모르겠으나 7.4 이상의 버전에서는 추가적인 라이브러리와 패스 설정까지 해야 한다고 한다.

개인적으로 테스트해봤지만 잘 되지 않아 PHP 7.3으로 다운그레이드 했다. 이에 대해서는 추가적인 테스트를 진행해봐야 할 것 같다.

 

https://www.php.net/manual/en/sqlite3.installation.php

 

 

연동을 확인했으니 이제 위 코드를 지우고 아래 코드를 테스트해보자.

 

<?php
$dbPath="./my.db";

// 디렉토리에 생성한 db 파일이 있는지 확인한다.
$is_file_exist = file_exists($dbPath);

// 파일 체크
if(!$is_file_exist){
	echo '<h1>Can not find db file.</h1>';
}

// DB 연동
try
{
	$DB=new SQLite3($dbPath);
}
catch(PDOException $e) 
{
	echo '<h1>An error has occurred.</h1><pre>', $e->getMessage(),'</pre>';
}

// 테이블 조회
$query = "SELECT * FROM 'PERSON';";
$result = $DB->query($query);

while($row = $result->fetchArray(SQLITE3_ASSOC))
{
	echo $row["NAME"], " ";
}

?>

 

http://localhost/sqlite3/dbtest.php 를 확인해봤을 때 아래와 같이 나온다면 성공이다.

 

 

 

Unity와 SQLite 연동

 

Unity 다운로드가 안돼있다면 아래 링크를 참고하자

 

Unity 다운로드

요즘 디지털 트윈, 메타버스와 같은 기술들이 유행하면서 Unity와 같은 엔진들이 단순히 게임 엔진의 역할만 하는 것이 아니라 가상현실, 가상공간을 구현하는 도구로도 많이 사용되고 있다. 나

foreverhappiness.tistory.com

 

유니티 허브를 열어 새 프로젝트를 만들어보자

 

 

프로젝트 이름과 경로를 설정하고 생성을 누른다.

 

 

아래 Project창의 Assets에서 우클릭 > Create > C# Script를 눌러 스크립트 파일을 생성한다.

나는 SQLITE_TEST라는 이름으로 스크립트를 만들었다.

 

 

스크립트 파일에는 아래와 같이 작성한 후 저장한다.

PHP 파일 경로가 다르다면 phpPath 변수를 수정한다.

코드는 이곳을 참고했다.

https://giseung.tistory.com/30

 

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class SQLITE_TEST : MonoBehaviour
{
    private void Start()
    {
        StartCoroutine(GetMySQLData());
    }

    private IEnumerator GetMySQLData()
    {
        // PHP 파일 경로
        string phpPath = "http://localhost/SQLite3/dbTest.php";

        WWWForm form = new WWWForm();

        using (UnityWebRequest webRequest = UnityWebRequest.Post(phpPath, form)) //웹 서버에 요청
        {
            yield return webRequest.SendWebRequest(); //요청이 끝날 때까지 대기

            Debug.Log(webRequest.downloadHandler.text); //서버로부터 받은 데이터를 string 형태로 출력
        }
    }
}

 

Main Camera를 클릭하고 작성한 스크립트를 Inspector 하단에 끌어다 놓는다.

 

 

실행했을 때 아래와 같이 DB 내용이 출력된다면 성공!