一起来玩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;
        }
    }



}

以上就是一个简单的数据库工具类,复杂功能也可以在此基础上添加。针对不同项目可以进行二次封装。

点个关注,给个赞呗!

猜你喜欢

转载自blog.csdn.net/maybe_ice/article/details/105155350