작업환경
Unity 5.6.0f2 Personal (64bit)
SQLite version 3.18.0.
일단 Sqlite 파일을 받는다
http://www.sqlite.org/download.html
나는 이걸로 받았다.
64-bit DLL (x64) for SQLite version 3.18.0.
받은 sqlite 압축파일의 압축을 풀어준다.
폴더안에 들어있는
sqlite3.def
sqlite3.dll
파일을
유니티 프로젝트 폴더 Assets/Plugins 안에 넣어준다.
Plugins폴더가 없으면 새 Plugins폴더를 만들면 된다. 이름은 같게 해서 ㅇㅇ
DB관리를 위해
sqlitebrowser를 다운 받는다
https://github.com/sqlitebrowser/sqlitebrowser
전 단계에서 받은 DB Browser for SQLite 프로그램을 이용해서
Unity 프로젝트 Assets폴더에 DB를 생성해준다.
C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0 ( 설치된 유니티 폴더 내 Editor\Data\Mono\lib\mono\2.0 )
폴더 안에 들은
System.Data.dll
Mono.Data.Sqlite.dll
두 파일을 찾아서 유니티 프로젝트 Assets/Plugins 폴더안에 복사 붙여넣기 해준다.
이제 스크립트를 작성할 시간이다.
C# 스크립트 파일을 만들어주자
나는 DBAccess라는 C# 스크립트 파일을 만들었다.
using System;
using System.Data;
using Mono.Data.Sqlite;
네임스페이스에 using Mono.Data.Sqlite; using System.Data; using System; 를 추가해준다.
DBAccess
using UnityEngine;
using System;
using System.Data;
using Mono.Data.Sqlite;
public class DBAccess : MonoBehaviour
{
void Start ()
{
// conn = "URI=file:" + Application.dataPath + "/DB Browser로 만든 데이터베이스 이름.s3db";
string conn = "URI=file:" + Application.dataPath + "/BoxDB.s3db";
// IDbConnection
IDbConnection dbconn;
dbconn = (IDbConnection) new SqliteConnection(conn);
dbconn.Open(); //Open connection to the database.
// IDbCommand
IDbCommand dbcmd = dbconn.CreateCommand();
// sql문장 = "SELECT 조회할 컬럼 FROM 조회할 테이블";
string sqlQuery = "SELECT Box_id,Box_name FROM BOX";
dbcmd.CommandText = sqlQuery;
// IDataReader
IDataReader reader = dbcmd.ExecuteReader();
while ( reader.Read() )
{
// 변수타입은 컬럼 데이터 타입에 맞추면 된다.
int Box_id = reader.GetInt32(0);
string Box_name = reader.GetString(1);
Debug.Log("Box_id= " + Box_id + " Box_name =" + Box_name);
}
// 닫아주고 초기화 시켜주는 곳
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbconn.Close();
dbconn = null;
}
}
Start() 함수 내에서
DB conn객체를 생성하고
원하는 작업을 할 수 있게 스크립트를 작성해준다.
//
SqliteException: SQLite error
no such table: Capsule
/DB Browser로 만든 데이터베이스 이름.s3db 로 스크립트를 작성했더니
테이블을 못 찾겠다는 오류가 발생했다.
이유는 왜인지 모르겠는데
확장자를 .s3db에서 .db로 바꾸니 실행이 되고
Box 테이블에서 데이터를 읽는다.
추가로 지금 작성한 DBAccess 스크립트는
Main Camera에 넣어줬다
참고
Database (SQLite) Setup for Unity ( C# )
http://answers.unity3d.com/questions/743400/database-sqlite-setup-for-unity.html
SQLite and Unity ( JS )
http://wiki.unity3d.com/index.php/SQLite
SQLite4Unity3d ( C# )