본문 바로가기

Unity & C#

[모바일] Unity SQLite DB 사용

string filepath = string.Format("{0}/{1}", Application.persistentDataPath, DATABASE_NAME);
StringBuilder sb = new StringBuilder();

string conn;
string sqlQuery;
IDbConnection dbconn;
IDbCommand dbcmd;
IDataReader dbreader;

conn = "URI=file:" + filepath;
using (dbconn = new SqliteConnection(conn))
{
    dbconn.Open();
    dbcmd = dbconn.CreateCommand();
    dbcmd.CommandText = "DROP TABLE IF EXISTS TEST;";
    dbcmd.ExecuteNonQuery();

    dbcmd.CommandText = "CREATE TABLE TEST(TestKey TEXT PRIMARY KEY, TestNum INTEGER, TestAge INTEGER);";
    dbcmd.ExecuteNonQuery();

    dbcmd.CommandText = "BEGIN;";
    dbcmd.ExecuteNonQuery();

    dbcmd.CommandText = "INSERT INTO TEST(TestKey, TestNum, TestAge) VALUES('TEST', 1, 2);";
    dbcmd.ExecuteNonQuery();
    
    dbcmd.CommandText = "INSERT INTO TEST(TestKey, TestNum, TestAge) VALUES('TEST2', 5, 6);";
    dbcmd.ExecuteNonQuery();
    
    dbcmd.CommandText = "COMMIT;";
    dbcmd.ExecuteNonQuery();

    dbcmd.Dispose();
    dbcmd = null;
    dbconn.Close();
}

테이블을 생성과 해당 데이터를 INSERT 하는 형태의 코드

 

using (dbconn = new SqliteConnection(conn))
{
    dbconn.Open();
    dbcmd = dbconn.CreateCommand();

    dbcmd.CommandText = "SELECT * from TEST;";
    dbreader = dbcmd.ExecuteReader();
    
    while (dbreader.Read())
    {
        sb.Append($"id = {dbreader.GetString(0)}");
        sb.Append($", name = {dbreader.GetInt32(1)}");
        sb.Append($", age = {dbreader.GetInt32(2)}");
		
        Debug.Log($"[TEST] {sb}");
        
        sb.Clear();
    }
    
    dbreader.Close();
    dbreader = null;
    dbcmd.Dispose();
    dbcmd = null;
    dbconn.Close();
}

생성된 테이블의 해당 데이터를 SELECT 하여 해당 데이터의 디버그 로그로 확인하는 형태

'Unity & C#' 카테고리의 다른 글

[모바일] 파일 읽기 쓰기  (0) 2023.03.24