在Unity工程中使用SQLite數據庫

Chinar blog www.chinar.xin

在Unity工程中使用SQLite數據庫


本文提供全流程,中文翻譯。

Chinar 的初衷是將一種簡單的生活方式帶給世人

使有限時間 具備無限可能

Chinar —— 心分享、心創新!

助力快速完成在 Unity 工程中使用SQLite數據庫

爲初學者節省寶貴的時間,避免採坑!

Chinar 教程效果:



全文高清圖片,點擊即可放大觀看 (很多人竟然不知道)


1

Presentation —— 介紹



一、爲什麼要使用SQLite數據庫?

請查看這裏(這是一位叫 秦元培 的博主寫的博客),詳細的闡述了什麼是SQLite以及爲什麼使用,還附有使用案例

二、有沒有一款好用的插件能讓我直接在Unity中使用SQLite呢?

當然有!本篇文章就是介紹一個可以在Unity中直接使用SQLite的插件

下載地址

2

Use —— 使用

首先解壓下載好的插件包,將SQLite.cs放在工程裏,sqlite3.dll放在工程的Plugins文件夾中,沒有的話創建一個
在這裏插入圖片描述
如此,我們就可以在Unity中對SQLite數據庫進行操作了


2.1 CreateDatabase —— 創建數據庫

首先創建一個腳本,引用SQLite4Unity3d,定義一個數據庫連接字段

    /// <summary>
    /// 數據庫連接
    /// </summary>
    public SQLiteConnection Connection;

    void Start()
    {
        //參數1.數據庫地址,一般放在StreamingAssets文件夾中,2.開啓讀寫和創建數據庫權限
        Connection = new SQLiteConnection(Application.streamingAssetsPath+ "/TestDatabase.db",SQLiteOpenFlags.ReadWrite| SQLiteOpenFlags.Create);
    }

在場景中創建一個空物體,將腳本掛載上去點擊運行

在工程的StreamingAssets文件夾中就可以看到我們創建出來的數據庫
在這裏插入圖片描述


2.2 CreateTable —— 創建表

如何創建一張表呢?
首先我們要創建一個表的信息類腳本,裏面需要包含表裏所需的數據
舉個例子

using SQLite4Unity3d;

public class TestTable
{
    [PrimaryKey, AutoIncrement] //設置主鍵 自動增長
    public int    Id     { get; set; }//Id作爲主鍵
    public string Name   { get; set; }
    public int    Age    { get; set; }
    public float  Height { get; set; }
    public float  Weight { get; set; }
    
    /// <summary>
    /// 重寫ToString函數,方便控制檯打印
    /// </summary>
    /// <returns></returns>
    public override string ToString()
    {
        return string.Format("[Person: Id={0}, Name={1},  Age={2}, Height={3}],Weight={4}]", Id, Name, Age, Height, Weight);
    }
}

然後在我們的控制腳本里創建這個表

void Start()
    {
        Connection = new SQLiteConnection(Application.streamingAssetsPath+ "/TestDatabase.db",SQLiteOpenFlags.ReadWrite| SQLiteOpenFlags.Create);
        Connection.CreateTable<TestTable>();//創建表
    }

運行工程


2.3 ConnectionTable —— 連接表

我們使用Navicat Premium來連接我們的數據庫,方便我們查看對錶做出的更改

首先點擊連接,選擇SQLite
在這裏插入圖片描述
在這裏插入圖片描述
點擊確定連接數據庫
在這裏插入圖片描述


2.4 InsertData —— 增加數據

插件作者封裝了幾個方法,可以讓我們方便的對數據庫進行插入操作

單個的數據插入

void InsertData()
    {
        var p = new TestTable
        {
            Id = 1,
            Name = "Chinar",
            Age = 999,
            Height = 180.5f,
            Weight = 140.3f
        };
        Connection.Insert(p);
    }

我們在Start函數中調用一下,運行工程後在表中可以看到新增數據
在這裏插入圖片描述
可以看到在Weight 列中的數據精度有所丟失,這是數據庫本身造成的,

解決方案就是將float類型的數據轉爲string類型保存下來,使用的時候再轉回float

多個數據插入,由於設置了ID爲主鍵並且自增,所以可以不給ID賦值

void InsertData()
    {
        Connection.InsertAll(new[]  //插入一個數組,數組裏是多條數據
        {
            new TestTable
            {
                Name = "小明",
                Age = 12,
                Height = 130.3f,
                Weight = 100.2f
            },
            new TestTable
            {
                Name   = "老皮",
                Age    = 12,
                Height = 133f,
                Weight = 96.2f
            },
            new TestTable
            {
                Name   = "狗子",
                Age    = 12,
                Height = 140f,
                Weight = 120.2f
            },
            new TestTable
            {
                Name   = "剛子",
                Age    = 13,
                Height = 135f,
                Weight = 85.6f
            },
            new TestTable
            {
                Name   = "阿豪",
                Age    = 13,
                Height = 123.4f,
                Weight = 99f
            },
        });
    }

運行工程後查看錶

在這裏插入圖片描述


2.5 DeleteData —— 刪除數據

下面介紹對錶中數據的刪除操作

一、查找準確數據刪除

//首先查找到名字爲小明的那一條數據,然後將其刪除
var data = Connection.Table<TestTable>().Where(_ => _.Name == "小明").FirstOrDefault();
Connection.Delete(data);//刪除

然後運行工程查看錶
在這裏插入圖片描述
可以看到 “小明” 已經被刪除了,也就是ID爲2的那一條數據被刪掉了

一、刪除主鍵

//刪除主鍵爲3的數據
Connection.Delete<TestTable>(3);

在這裏插入圖片描述
可以看到 “老皮”也被刪除了


2.6 UpdateData —— 更新數據

更新數據和刪除數據的使用方法一致

先獲得數據信息,然後進行更新

//獲取到名字爲“小明”的數據
var data = Connection.Table<TestTable>().Where(_ => _.Name == "小明").FirstOrDefault();
//更改 Weight 
data.Weight = 200f;
//更新數據
Connection.Update(data);

我們將“小明”的Weight值改爲200
在這裏插入圖片描述
這裏注意一下,如果沒有設置主鍵的話會更新失敗


2.7 SelectData —— 查找數據

查找數據就簡單多了,像剛剛我們獲取數據的方法是一種查找,用來查找一條數據

還有另外一種查找,查找多條數據,例如:所有Age爲12的數據,打印出名字

var datas = Connection.Table<TestTable>().Where(_=>_.Age == 12);//獲取到所有Age爲12的數據
foreach (var v in datas)//遍歷
{
    Debug.Log(v.Name);
}

結果如下
在這裏插入圖片描述
以上就是SQLite在Unity中的簡單應用,更多功能等你發現


支持

May Be —— 開發者,總有一天要做的事!


擁有自己的服務器,無需再找攻略

Chinar 提供一站式《零》基礎教程

使有限時間 具備無限可能!

先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)


Chinar 免費服務器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客爲非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均爲本人所擁有,本人保留所有法定權利。違者必究

對於需要複製、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯繫,留言,Email: [email protected]

對於經本博主明確授權和許可使用文章及內容的,使用時請註明文章或內容出處並註明網址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章