Unity数据库的简单使用

发表于2018-07-11
评论0 8.1k浏览
一般情况下想要使用使用数据库,首先需要创建数据库管理脚本,然后用该脚本操作数据库。

下载地址:http://www.sqlite.org/download.html
  将Precompiled Binaries for Windows下的包下载下来sqlite-dll-win64-x64-3150100.zip、sqlite-tools-win32-x86-3150100.zip
  sqlite-dll-win64-x64-3150100.zip包含.def、.dll两个文件
sqlite-tools-win32-x86-3150100.zip包含三个执行文件exe
将它们一起解压到D:\sqlite文件夹,配置环境变量PATH后追加“D:\sqlite;”

1.创建一个Unity工程,创建一个文件夹命名为Plugins

2.导入两个文件到Plugins文件夹(Mono.Data.Sqlite.dll和System.Data.dll)

3.新建一个脚本用来操作数据库的使用

4.在脚本中引用命名空间Mono.Data.Sqlite(能引用证明成功了)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
public class SqliteTest : MonoBehaviour {
    void Start () {
        //打开数据库
        SqliteConnection con = new SqliteConnection("data source=" + Application.dataPath + "/data.db");
        con.Open();
        //创建表
        SqliteCommand cmd = new SqliteCommand("create table if not exists User(uid integer, name text)",con);
        //执行创建表命令
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        //插入一条数据
        cmd = new SqliteCommand("insert into User values(1,'令狐冲')", con);
        //执行插入数据命令
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        //查询当前几条结果
        cmd = new SqliteCommand("select count(*) from User", con);
        object obj = cmd.ExecuteScalar();
        int count = System.Convert.ToInt32(obj);
        Debug.Log("count:" + count);
        cmd.Dispose();
        //查询数据
        cmd = new SqliteCommand("select * from User",con);
        SqliteDataReader reader = cmd.ExecuteReader();
        /*
         1 令狐冲
         2 岳不群
         3 任盈盈
         */
        while (reader.Read())
        {
            //取出第一列
            int uid = reader.GetInt32(0);
            //取出第二列
            string name = reader.GetString(1);
            Debug.Log(uid + " " + name);
        }
        cmd.Dispose();
        reader.Close();
        con.Close();
    }
    void test()
    {
        SqliteManager.Instance.Open(Application.dataPath + "/data.db");
        //创建表
        SqliteManager.Instance.ExecuteNonQuery("create table if not exists User(uid integer, name text)");
        //插入一条数据
        SqliteManager.Instance.ExecuteNonQuery("insert into User values(2,'岳不群')");
        //查询
        SqliteDataReader reader = SqliteManager.Instance.ExecuteReader("select * from User");
        //....
        reader.Close();
        SqliteManager.Instance.Close();
    }
}

其中大家看到了SqliteManager的单例所以我们还需要创建一个管理脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
public class SqliteManager : MonoBehaviour {
    public static SqliteManager Instance;
    SqliteConnection con;
    SqliteCommand cmd;
    SqliteDataReader reader;
    void Awake () {
        Instance = this;
    }
    //打开数据库
    public void Open(string fileName)
    {
        con = new SqliteConnection("data source=" + fileName);
        con.Open();
    }
    //关闭数据库
    public void Close()
    {
        con.Close();
    }
    //执行增删改
    public int ExecuteNonQuery(string command)
    {
        cmd = new SqliteCommand(command, con);
        int count = cmd.ExecuteNonQuery();
        cmd.Dispose();
        return count;
    }
    //执行查
    public SqliteDataReader ExecuteReader(string command)
    {
        cmd = new SqliteCommand(command, con);
        reader = cmd.ExecuteReader();
        cmd.Dispose();
        return reader;
    }
}
这样就实现了数据库的增删改查操作。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引