一起來玩U3D之本地數據庫工具類

sqlite本地數據庫工具類

這是一個獲取數據庫連接的框架,可以在使用本地數據庫的時候繼承此類,就不用反覆去寫數據庫的鏈接操作。

下面直接給出代碼(該說的在註釋裏寫的算是比較詳細了):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;

public class SqlFrame {

    #region SingleTon
    //單例對象
    private static SqlFrame instance;

    protected SqlFrame() { }

    public static SqlFrame GetInstance()
    {
        if (instance == null)
        {
            instance = new SqlFrame();
        }
        return instance;
    }

    #endregion

    //數據庫連接信息
    private string conStr;
    //sqlite數據庫三個類
    private SqliteConnection con;
    private SqliteCommand cmd;
    private SqliteDataReader reader;

    /// <summary>
    /// 打開數據庫連接並創建指令對象
    /// </summary>
    /// <param name="dataBaseName"></param>
    public void OpenDataBase(string dataBaseName)
    {
        //判斷數據庫名稱是否有後綴
        if (!dataBaseName.EndsWith(".sqlite"))
        {
            dataBaseName += ".sqlite";
        }
        //運行環境,自行查找API找到自己想要的運行環境
#if UNITY_EDITOR

        conStr = "Data Source = " + Application.streamingAssetsPath + "/" + dataBaseName;

#endif
        //建立連接
        con = new SqliteConnection(conStr);
        //打開數據庫
        con.Open();
        //創建指令對象
        cmd = con.CreateCommand();
    }

    /// <summary>
    /// 執行非查找的sql語句
    /// </summary>
    /// <param name="query">sql語句</param>
    /// <returns>返回受影響的行數</returns>
    public int DontSelect(string query)
    {
        //賦值sql語句
        cmd.CommandText = query;
		//執行
        return cmd.ExecuteNonQuery();
    }

    /// <summary>
    /// 插入數據
    /// </summary>
    /// <param name="query">sql語句</param>
    /// <returns>返回受影響的行數</returns>
    public int Insert(string query)
    {
        return DontSelect(query);
    }

    /// <summary>
    /// 更新數據
    /// </summary>
    /// <param name="query">sql語句</param>
    /// <returns>返回受影響的行數</returns>
    public int Update(string query)
    {
        return DontSelect(query);
    }

    /// <summary>
    /// 刪除數據
    /// </summary>
    /// <param name="query">sql語句</param>
    /// <returns>返回受影響的行數</returns>
    public int Delete(string query)
    {
        return DontSelect(query);
    }

    /// <summary>
    /// 執行查找單個數據操作
    /// </summary>
    /// <param name="query">sql語句</param>
    /// <returns>返回查找結果</returns>
    public object SelectSingleData(string query)
    {
        //賦值sql語句
        cmd.CommandText = query;
		//返回執行結果
        return cmd.ExecuteScalar();
    }

    /// <summary>
    /// 執行查詢多個數據操作
    /// </summary>
    /// <param name="query">sql語句</param>
    /// <returns>返回查詢結果</returns>
    public List<ArrayList> SelectMutipleData(string query)
    {
        //賦值sql語句
        cmd.CommandText = query;

        //執行sql語句保存結果在reader中
        reader = cmd.ExecuteReader();

        //實例化一個list集合保存所有查出的數據
        List<ArrayList> result = new List<ArrayList>();

        while (reader.Read())
        {
            //實例化一個集合保存每一行數據
            ArrayList currentRow = new ArrayList();

            //將當前行數據添加到集合
            for (int i = 0; i < reader.FieldCount; i++)
            {
                //將當前列數據添加入集合
                currentRow.Add(reader.GetValue(i));
            }
            //保存行數據
            result.Add(currentRow);
        }
        //關閉讀取器
        reader.Close();
        //返回結果
        return result;

    }


    /// <summary>
    /// 關閉數據庫方法
    /// </summary>
    public void CloseDataBase()
    {
        if (reader != null)
        {
            reader.Close();
            reader = null;
        }

        if (cmd != null)
        {
            cmd.Dispose();
            cmd = null;
        }

        if (con != null)
        {
            con.Close();
            con = null;
        }
    }



}

以上就是一個簡單的數據庫工具類,複雜功能也可以在此基礎上添加。針對不同項目可以進行二次封裝。

點個關注,給個讚唄!

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