unity读取mysql5.7版本示例

server/2024/12/4 17:08:50/

使用了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/server/147332.html

相关文章

【C语言】结构体(四)

本篇重点是typedef关键字 一&#xff0c;是什么&#xff1f; typedef用来定义新的数据类型&#xff0c;通常typedef与结构体的定义配合使用。 简单来说就是取别名 ▶ struct 是用来定义新的数据类型——结构体 ▶ typedef是给数据类型取别名。 二&#xff0c;为什么&#xf…

sscanf与sprintf函数

本期介绍&#x1f356; 主要介绍&#xff1a;sscanf()、sprintf()这对输入/输出函数&#xff0c;并详细讲解了这两个函数的应用场景。 概述&#x1f356; 在C语言的输出和输入库中&#xff0c;有三对及其相似的库函数&#xff1a;printf()、scanf()、fprintf()、fscanf()、spri…

C++入门一

一、命名空间 #include <stdio.h> int rand 0; int main() {printf("hello world\n");printf("%d\n", rand); } 这样是可以运行的&#xff0c;可是当我们加入一个头文件的时候 #include <stdio.h> #include <stdlib.h> int rand 0;…

python笔记3

复习及总结 python的软件安装及简单使用——python3.31 pycharm python的输出&#xff1a;print&#xff08;&#xff09; 简单&#xff08;直接&#xff09;输出 print&#xff08;&#xff09;输出到指定文件 fpopen(rC:\Users\M15R3\Desktop\1.txt,a) print("334…

用html+jq实现元素的拖动效果——js基础积累

用htmljq实现元素的拖动效果 效果图如下&#xff1a; 将【item10】拖动到【item1】前面 直接上代码&#xff1a; html部分 <ul id"sortableList"><li id"item1" class"w1" draggable"true">Item 1</li><li …

LearnOpenGL学习(光照 -- 颜色,基础光照,材质,光照贴图)

光照 glm::vec3 lightColor(0.0f, 1.0f, 0.0f); glm::vec3 toyColor(1.0f, 0.5f, 0.31f); glm::vec3 result lightColor * toyColor; // (0.0f, 0.5f, 0.0f); 说明&#xff1a;当我们把光源的颜色与物体的颜色值相乘&#xff0c;所得到的就是这个物体所反射的颜色。 创建…

Spark常问面试题---项目总结

一、数据清洗&#xff0c;你都清洗什么&#xff1f;或者说 ETL 你是怎么做的&#xff1f; 我在这个项目主要清洗的式日志数据&#xff0c;日志数据传过来的json格式 去除掉无用的字段&#xff0c;过滤掉json格式不正确的脏数据 过滤清洗掉日志中缺少关键字段的数据&#xff…

三十:在 Web 中什么样的响应才会被缓存?

Web 缓存是提升网站性能、减少服务器负载、降低延迟并提高用户体验的关键技术之一。为了确保缓存机制能够有效工作,开发者需要了解哪些响应会被缓存以及如何配置这些响应。本文将探讨 Web 中哪些响应会被缓存,以及缓存控制的基本原理。 1. 缓存概念简述 在 Web 中,缓存是将…