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 )
本博客爲非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均爲本人所擁有,本人保留所有法定權利。違者必究
對於需要複製、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯繫,留言,Email: [email protected]
對於經本博主明確授權和許可使用文章及內容的,使用時請註明文章或內容出處並註明網址