unity读取mysql5.7版本示例

使用了miniexcel插件,与mydata.dll 。

csharp 复制代码
using MiniExcelLibs;
using MySql.Data.MySqlClient;
using System.Collections.Generic;
using System.Data;
using System.Text;
using UnityEngine;

public class LoadMySQL_虚拟仿真 : DataLayerBase<Dictionary<string, string>>
{
    public static LoadMySQL_虚拟仿真 Ins;
    string server = "192.169.4.102";
    string database = "avatar_model";
    string user = "model";
    string password = "avatar@model";
    MySqlConnection connection;
    string SQL = @"SELECT {0} FROM {1}";
    string SetMysql =@"
UPDATE {1}
SET {0} = '{2}'
WHERE {0} = '{0}';
";
    public class XNFZ_Data
    {
        public string TagName { get; set; }
        public string DataType { get; set; }
        public string ReadWrite { get; set; }
        public string ScanRate_ms { get; set; }
        public string Description { get; set; }
        public string Value { get; set; }
    }
    List<string> sqlList = new List<string>();
    public static Dictionary<string, XNFZ_Data> XNFZ_keyValues = new Dictionary<string, XNFZ_Data>();
    protected override void Awake()
    {
        base.Awake();
        Ins = this;
        LoadExcel(Application.streamingAssetsPath + "/宁波数据展示点位V3.xlsx", "IDEAS");
        joinFind();

        foreach (var item in XNFZ_keyValues)
        {
            sqlList.Add(item.Key);
        }

    }
    protected override void RequestData(ref Dictionary<string, string> Data)
    {
        if (XNFZ_keyValues.Count > 0)
        {
            StringBuilderSQL(sqlList, "model_data_display_point");

        }

    }
    public void SetDataValue_修改数据库字段值(string tagname,string value)
    {
       // SetMysql = string.Format(SetMysql,);
    }
    void joinFind()
    {
        string sqlSer = "server = " + server + ";" + "Database =" + database + ";" +
                        "user =" + user + ";" +
                        "password =" + password;
        connection = new MySqlConnection(sqlSer);


        try
        {
            connection.Open();
            Debug.Log("数据库连接成功!!!!!");
        }
        catch (System.Exception e)
        {
            Debug.LogError("数据库连接失败" + e.Message);
            return;
        }
        if (connection.State != ConnectionState.Open)
            return;


    }

    void StringBuilderSQL(List<string> sqlList, string sqlcharname)
    {
        StringBuilder sql = new StringBuilder();
        StringBuilder queryTagName = new StringBuilder();
        for (int i = 0; i < sqlList.Count; i++)
        {
            queryTagName.Append(sqlList[i]);
            queryTagName.Append(",");
        }
        queryTagName.Remove(queryTagName.Length - 1, 1);
        sql.Append(string.Format(SQL, queryTagName, sqlcharname));
      
        DataSet ds = Query(sql.ToString());
        if (ds != null && ds.Tables.Count > 0)
        {

            for (int i = 0; i < sqlList.Count; i++)
            {

                string sqlTagName = ds.Tables[0].Rows[0][sqlList[i]].ToString().Replace(" ", "");

                foreach (var item in XNFZ_keyValues)
                {

                    if (string.Equals(sqlList[i], item.Key))
                    {
                        if (string.IsNullOrEmpty(sqlTagName))
                        {
                            Debug.Log(sqlList[i]);
                        }
                        else
                        {
                            item.Value.Value = sqlTagName;
                        }
                      
                    }
                }
            }
        }
    }



    public DataSet Query(string sql)
    {
        DataSet ds = new DataSet();
        MySqlCommand command = new MySqlCommand(sql, connection);
        command.CommandTimeout = 100;
        MySqlDataAdapter adapter = new MySqlDataAdapter(command);
        adapter.Fill(ds);

        return ds;
    }
    void LoadExcel(string path, string sheel)
    {
        var rows = MiniExcel.Query<XNFZ_Data>(path, sheel, ExcelType.XLSX, "A1");
        //using (var stream = File.OpenRead(path)) 
        //{
        //    var rows = stream.Query<XNFZ_Data>(); 

        if (rows != null)
        {
            foreach (XNFZ_Data item in rows)
            {

                if (!string.IsNullOrEmpty(item.TagName))
                {

                    XNFZ_keyValues.Add(item.TagName, item);
                }
                else
                {
                    Debug.LogError(sheel + $"中重复或空的DataName:{item.TagName}");
                }
            }
        }
        else
        {
            Debug.LogError("excel加载失败");
        }

    }
    public static XNFZ_Data GetDataName(string dataname)
    {
        if (XNFZ_keyValues.ContainsKey(dataname))
        {
            return XNFZ_keyValues[dataname];
        }
        else { Debug.Log("字典中不包含" + dataname); return null; }
    }
    protected override void OnDisable()
    {
        base.OnDisable();
        connection.Close();
    }
}
相关推荐
魔士于安9 分钟前
Unity类似博物馆场景
前端·unity·游戏引擎·贴图·模型
小拉达不是臭老鼠27 分钟前
Unity数据持久化_XML
学习·unity
RReality30 分钟前
【Unity Shader URP】模板遮罩 / 传送门 实战教程
ui·unity·游戏引擎·图形渲染·材质
郑寿昌9 小时前
虚幻引擎6:Lumen光源技术前瞻
游戏引擎·虚幻
RPGMZ1 天前
RPGMakerMZ 获取敌人攻击时属性 用于画UI或属性克制
javascript·游戏引擎·rpgmz·rpgmakermz
zdr尽职尽责1 天前
Untiy 处理Aseprite 资产 解决偏移问题
学习·unity·c#·游戏引擎
LcGero1 天前
游戏引擎Luanti的前世今生与技术解析
游戏引擎·lua·游戏开发·我的世界·luanti
冰凌糕1 天前
Unity3D Shader UV 与纹理采样
unity
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 06:相机视图矩阵的由来
c++·线性代数·unity·矩阵·godot·图形渲染·unreal engine
XiaoZhangGOGOGO2 天前
《剑来2》动画第二季点映百度网盘提取码_百度网盘提取码资源
unity