unity读取mysql5.7版本示例

devtools/2024/12/4 22:31:38/

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

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();}
}

http://www.ppmy.cn/devtools/139458.html

相关文章

【iOS】设计模式的六大原则

【iOS】设计模式的六大原则 文章目录 【iOS】设计模式的六大原则前言开闭原则——OCP单一职能原则——SRP里氏替换原则——LSP依赖倒置原则——DLP接口隔离原则——ISP迪米特法则——LoD小结 前言 笔者这段时间看了一下有关于设计模式的七大原则&#xff0c;下面代码示例均为OC…

重学设计模式-工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)

在平常的学习和工作中&#xff0c;我们创建对象一般会直接用new&#xff0c;但是很多时候直接new会存在一些问题&#xff0c;而且直接new会让我们的代码变得非常繁杂&#xff0c;这时候就会巧妙的用到设计模式&#xff0c;平常我们通过力扣学习的算法可能并不会在我们工作中用到…

1、C++ 介绍

1、C介绍 1.1、C发展 C是在C的基础上发展而来。 目前的 C具有三方面的特点&#xff1a; 其一&#xff0c; C是 C 语言的超集&#xff0c;因此其能与 C 语言兼容&#xff1b;&#xff08;数据类型 变量 运算符 流程控制语句 函数&#xff09; 其二&#xff0c; C支持面向对象…

JavaScript实现tab栏切换

JavaScript实现tab栏切换 代码功能概述 这段代码实现了一个简单的选项卡&#xff08;Tab&#xff09;切换功能。它通过操作 HTML 元素的类名&#xff08;class&#xff09;来控制哪些选项卡&#xff08;Tab&#xff09;和对应的内容板块显示&#xff0c;哪些隐藏。基本思路是先…

Linux--Debian或Ubuntu上扩容、挂载磁盘并配置lvm

一、三块12TB组RAID 5 可用容量约24TB 二、安装LVM工具&#xff08;已安装请忽略&#xff09; sudo apt-get install lvm2二、查看可用磁盘 sudo lsblk 或者 sudo fdisk -l三、创建物理卷&#xff08;PV&#xff09; 选中刚做的磁盘组 sudo pvcreat /dev/sdb1四、创建卷组…

PyTorch的基础结构和概念

PyTorch是一个基于Python的开源深度学习框架&#xff0c;由Facebook的人工智能研究小组于2016年发布。它以其灵活性、易用性和动态计算图的特点&#xff0c;在研究人员和工程师中非常受欢迎。以下是PyTorch的一些核心概念和组件&#xff1a; 张量 (Tensor): 张量是PyTorch中的…

SpringBoot源码-Spring Boot启动时控制台为何会打印logo以及自定义banner.txt文件控制台打印

1.当我们启动一个SpringBoot项目的时候&#xff0c;入口程序就是main方法&#xff0c;而在main方法中就执行了一个run方法。 SpringBootApplication public class StartApp {public static void main(String[] args) {// testSpringApplication.run(StartApp.class);} }publi…

LLM学习笔记(11)pipeline() 函数的幕后工作

Hugging Face 的 pipeline 背后做了什么&#xff1f; Hugging Face 的 pipeline 是一个高层封装工具&#xff0c;简化了许多繁琐的操作&#xff0c;使得开发者可以快速调用 NLP 模型完成复杂任务。以示例中的 情感分析任务 (sentiment-analysis) 为例&#xff0c;pipeline 背后…