SQLite 실습

Lee Hyeuk Jin·2023년 12월 13일

개념공부 및 실습

목록 보기
1/12

SQLite

테이블

SQLite 명령문

삭제 : DELETE from Person
		- DELETE FROM PERSON WHERE = '값'

갱신 : INSERT Into Person VALUES('값')

조회 : SELECT *from Person

오름차순 : SELECT Name from Person ORDER by name;

역순 : SELECT Name from Person ORDER by name DESC;

조건 : SELECT *From Person Where Name = '값'

null이 아닌 조건 : SELECT *From Person Where Name NOT NULL

패턴과 일치하는 문자열 찾기 : SELECT *FROM Person WHERE Birthday Like '값'

평균 : SELECT avg('행이름') FROM Person

업데이트 : UPDATE Person Set Birthday = '값' Where name = '민아' (조건)

조건문 CASE Whne '조건' then '값' end

그룹화 : SELECT round(Height), count(*)FROM Person GROUP By 1
	Having : SELECT round(Height), count(*)FROM Person GROUP By round(Height) HAVING count(*) > 1; 
    
    

이를 이용해서 전에 만든 닷지 게임에 적용해 보았다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using Mono.Data.Sqlite;
using System.Data;
using UnityEngine.UI;
using UnityEditor.UI;
using Unity.VisualScripting.Dependencies.Sqlite;

public class Rank : MonoBehaviour
{
    // Start is called before the first frame update
    CurrentTime currentTime;
    private void Start()
    {
        currentTime = GetComponent<CurrentTime>();
    }
    public void record()
    {
        string dbname = "TEST.db";
        string strConnection = "URI=file:" + Application.streamingAssetsPath + "/" + dbname;
        IDbConnection dbConnection = new SqliteConnection(strConnection);

        dbConnection.Open();

        //데이터 읽기

        string tablename = "test";

        IDbCommand dbcommand = dbConnection.CreateCommand();
        
        int ranktime = (int)currentTime.NewTime;
        string insertQuery = $"INSERT INTO {tablename} (Score) VALUES ('{ranktime}');";
        
        dbcommand.CommandText = insertQuery;
        dbcommand.ExecuteNonQuery();

        string orderQuery = $"SELECT Score from {tablename} Order By Score DESC";
        IDbCommand selectCommand = dbConnection.CreateCommand();
        selectCommand.CommandText = orderQuery;
        IDataReader reader = selectCommand.ExecuteReader();

        while (reader.Read())
        {
            int score = reader.GetInt32(0);
            Debug.Log("Score: " + score);
        }
        dbConnection.Close();

    }
}

새로 추가한 스크립트
TEST.db 파일의 test 테이블을 불러와서 닷지게임에서 게임이 끝난 시간을 기록하는 코드이다.

int ranktime = (int)currentTime.NewTime; 코드를 통해 Currnet 스크립트에있는 현재 시간을 참조하고

string insertQuery = $"INSERT INTO {tablename} (Score) VALUES ('{ranktime}');";

dbcommand.CommandText = insertQuery;

test 테이블에 닷지게임 기록이 갱신되도록 코드를 입력한다.

string orderQuery = $"SELECT Score from {tablename} Order By Score DESC";
IDbCommand selectCommand = dbConnection.CreateCommand();
selectCommand.CommandText = orderQuery;
IDataReader reader = selectCommand.ExecuteReader();

while (reader.Read())
{
    int score = reader.GetInt32(0);
    Debug.Log("Score: " + score);
}

이후 오름차순의 역순으로 테이블을 배열하고 Debug.Log를 통해 유니티에서 출력한다.

기록된 닷지게임 기록 시간


유니티 디버그를 통해 출력되는 오름차순으로 기록되는 닷지게임 기록시간

profile
유니티 C# 학습자

0개의 댓글