Sql数据库在Unity中的使用

SqlManager的单例类

  这里在写了一个SqlManager类的单例来实现Sql方法在Unity中的使用,Sql语句基本的增删查改语言在我的另外一篇博客里面有记录( Sql安装及Sql增删查改)https://blog.csdn.net/weixin_43492764/article/details/88393806
  代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
using System;
public class SqlManager
{
    #region 单例模式
    //SqlManager的一个单例
    private static SqlManager instance;
    public static SqlManager GetInstance()
    {
        if (instance == null)
        {
            instance = new SqlManager();
        }
        return instance;
    }
    private SqlManager()
    {
    }
    #endregion

    #region sqlite数据库的一些基础操作方法的封装
    /// <summary>
    /// Sqlite数据库的一些基础操作的封装
    /// </summary>
    private SqliteConnection connect;//数据连接对象
    private SqliteCommand command;//sql指令对象
    private SqliteDataReader reader;//数据读取对象


    /// <summary>
    /// 打开Sqlite数据库连接的方法
    /// </summary>
    ///<param name="dataBaseName">数据库名称</param>
	public void OpenDataBase(string dataBaseName)
    {
        if (!dataBaseName.Contains(".sqlite"))
        {
            dataBaseName += ".sqlite";
        }
        //数据库路径拼接   string类型
        string dataPath = "Data Source =" + Application.streamingAssetsPath +"/"+ dataBaseName;
        //对数据库连接对象进行赋值
        connect = new SqliteConnection(dataPath);
        //对sql指令对象进行赋值
        command = connect.CreateCommand();
        //打开数据路连接
        connect.Open();

    }
    /// <summary>
    /// 关闭数据路
    /// </summary>
    public void CloseDataBase()
    {
        try
        {
            connect.Close();
            if (reader != null)
            {
                reader.Close();
            }
        }
        catch (SqliteException ex)
        {
            Debug.LogError(ex.ToString());
        }
    }
    /// <summary>
    /// 执行非查询的工作(增删改三个不需要返回值的工作)
    /// </summary>
    ///<param name="sql">sql指令</param>
    public void RunNoneQuery(string sql)
    {
        try
        {
            command.CommandText = sql;
            command.ExecuteNonQuery();
        }
        catch (SqliteException ex)
        {
            Debug.Log(ex.ToString());            
        }
    }
    /// <summary>
    /// 查询单个数据
    /// </summary>
    /// <param name="sql">sql指令</param>
    /// <returns></returns>
    public object SelectSingleData(string sql)
    {
        try
        {
            command.CommandText = sql;
            object obj = command.ExecuteScalar();
            return obj;
        }
        catch (SqliteException ex)
        {
            Debug.Log(ex.ToString());
            return null;
        }
    }
    /// <summary>
    /// 查询多个数据
    /// </summary>
    /// <param name="sql">sql指令</param>
    /// <returns></returns>
    public List<ArrayList> SelectMutidata(string sql)
    {
        try
        {
            List<ArrayList> result = new List<ArrayList>();
            command.CommandText = sql;
            reader = command.ExecuteReader();
            while (reader.Read())
            {
                ArrayList temp = new ArrayList();                                                                                                                                                                                                                                                      
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    temp.Add(reader.GetValue(i));
                }
                result.Add(temp);
            }
            reader.Close();
            return result;
        }
        catch (SqliteException ex)
        {
            Debug.Log(ex.ToString());
            return null;
        }
    }
    #endregion

    #region 当前项目的一些常用方法的封装

    #endregion
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity支持使用Web SQL数据库,它是一个基于浏览器的数据库,可以在Web应用程序使用。它提供了一个简单的SQL接口,可以通过JavaScript来访问。 在Unity使用Web SQL数据库需要用到UnityWebRequest类和JavaScript代码。以下是一个简单的示例: 1. 创建一个HTML文件,包含以下的JavaScript代码: ```javascript var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS MyTable (id unique, data)'); tx.executeSql('INSERT INTO MyTable (id, data) VALUES (?, ?)', [1, 'test data']); }); function getData() { db.transaction(function (tx) { tx.executeSql('SELECT * FROM MyTable', [], function (tx, results) { var len = results.rows.length, i; for (i = 0; i < len; i++) { console.log(results.rows.item(i)); } }, null); }); } ``` 2. 在Unity创建一个C#脚本,使用UnityWebRequest类来加载HTML文件,并调用JavaScript代码: ```csharp using UnityEngine; using UnityEngine.Networking; public class WebSqlDatabase : MonoBehaviour { void Start() { StartCoroutine(LoadHtml()); } IEnumerator LoadHtml() { UnityWebRequest www = UnityWebRequest.Get(Application.dataPath + "/WebSqlDatabase.html"); yield return www.SendWebRequest(); if (www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { string html = www.downloadHandler.text; StartCoroutine(CallJavaScript(html)); } } IEnumerator CallJavaScript(string html) { string javaScript = "getData();"; Application.ExternalCall("eval", javaScript); yield return new WaitForEndOfFrame(); } } ``` 3. 将HTML文件和C#脚本放在Unity项目,并将HTML文件的Load Type设置为“Streaming Asset”。 4. 运行Unity项目,可以在控制台看到数据库的数据。 注意:Web SQL数据库已被标记为过时技术,不再受支持。在新的Web应用程序应该使用IndexedDB作为替代方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值