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();
    }
}
相关推荐
WarPigs18 小时前
游戏签到系统
unity
小拉达不是臭老鼠20 小时前
Unity中的UI系统之UGUI
学习·ui·unity
万兴丶20 小时前
Coplay适用于 Unity 的“Al 代理”使用指南
unity·游戏引擎·ai编程
魔士于安1 天前
Unity材质球大合集
unity·游戏引擎·材质
mxwin1 天前
Unity Shader 冰面 Shader 制作原理与流程
unity·游戏引擎·shader
玖玥拾1 天前
Cocos学习笔记:关卡系统、音频管理与物理控制
游戏引擎·cocos2d
小拉达不是臭老鼠1 天前
Unity中的UI系统之UGUI_登陆面板实现
ui·unity
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 11:频域·卷积·抗锯齿
c++·unity·图形渲染·opengl·three·unreal
玖玥拾1 天前
Cocos学习笔记:滚动视图、关卡系统与本地存储
游戏引擎·cocos2d
元气少女小圆丶2 天前
SenseGlove Nova 2+Unity开发笔记2
笔记·unity·游戏引擎