Unity3D笔记——MySQL数据库 简单使用

Unity使用Mysql(添/删/改/查)(保姆级) Unity使用Mysql环境搭配(保姆级)UnityDemo版本Mysql下载地址教程如果Mysql下载出现问题本次Demo下载地址新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 UnityDemo版本 Unity 阅读详情

**

Unity3D笔记——MySQL数据库 简单使用


前言:Unity3D笔记是我平时做一些好玩的测试和研究,记录的笔记。会比较详细也可能随口一提就过了。 所以大家见谅了,内容一般都会是原创的(非原创我会注明转载)。由于很多内容其他的朋友也肯定研究发表过,大家请指出错误。

公司需要做一个仿真监测软件,同时需要显示特别大的数据统计。表格,统计图 把我搞得头昏脑涨的。然后发现单纯的json或者xml的简单数据已经不够我用了,因为数据量真的太大了。(每分钟都会记录几个监测点的温度,湿度,粒子浓度等等)几个月下来就是海量的数据了。于是,就想到了数据库~

想了两种数据库:mysql还有sqlite。都研究了下 先捣鼓Mysql吧

一.准备工作

当然显示搭建数据库啦;
这是Mysql的安装地址:https://dev.mysql.com/downloads/mysql/
然后安装一个 Navicat,方便处理数据库,也可以用来验证SQL语句。
在这里插入图片描述

二.unity需要的dll

unity的安装目录找一下这些DLL 放入Plugins文件夹中(找不到网上搜下 估计也能下载)
在这里插入图片描述

三.MySql代码

创建一个用于链接Mysql的单位脚本,所有的链接 查询都是基于该单位脚本。可以实例化多个,分别链接不同的db;

using MySql.Data.MySqlClient;
using System;
using System.Data;

public class MySqlUnit
{
    protected  MySqlConnection mySqlConnection;
    //IP地址
    protected string _host;
    //端口号
    protected string _port;
    //用户名
    protected string _userName;
    //密码
    protected string _password;
    //数据库名称
    protected string _databaseName;

    /// <summary>
    /// 构造方法
    /// </summary>
    /// <param name="_host">ip地址</param>
    /// <param name="_userName">用户名</param>
    /// <param name="_password">密码</param>
    /// <param name="_databaseName">数据库名称</param>
    public MySqlUnit(string _host, string _port, string _userName, string _password, string _databaseName)
    {
        this._host = _host;
        this._port = _port;
        this._userName = _userName;
        this._password = _password;
        this._databaseName = _databaseName;
        OpenSQL();
    }


    public void OpenSQL()
    {
        try
        {
            string mySqlString = string.Format("Database={0};Data Source={1};User Id={2};Password={3};port={4};CharSet=utf8", _databaseName, _host, _userName, _password, _port);

            mySqlConnection = new MySqlConnection(mySqlString);

            mySqlConnection.Open();


        }
        catch (Exception e)
        {
            throw new Exception( e.Message.ToString());
        }

    }

    /// <summary>
    /// 关闭数据库
    /// </summary>
    public void CloseSQL()
    {
        if (mySqlConnection != null)
        {
            mySqlConnection.Close();
            mySqlConnection.Dispose();
            mySqlConnection = null;
        }
    }

  
    /// <summary>
    /// 执行SQL语句
    /// </summary>
    /// <param name="sqlString">sql语句</param>
    /// <returns></returns>
    public DataSet ExecuteString(string sqlString)
    {
        if (mySqlConnection.State == ConnectionState.Open)
        {
            DataSet ds = new DataSet();
            try
            {
                MySqlDataAdapter mySqlAdapter = new MySqlDataAdapter(sqlString, mySqlConnection);
                mySqlAdapter.Fill(ds);
            }
            catch (Exception e)
            {
                throw new Exception("SQL:" + sqlString + "/n" + e.Message.ToString());
            }
            return ds;
        }
        return null;
    }
}

四 SQLmanger——具体怎么增删改查

先创建连接,IP地址和端口 我是放在ini配置表里了,这里看情况自己定。结束的时候记得关闭连接

 private string iniPath = "";
    private MySqlUnit mySqlUnit;

    private void Awake()
    {
        _instance = this;

        iniPath = System.IO.Directory.GetCurrentDirectory()+ "/MySQL.ini";

        IniFiles iniFiles = new IniFiles(iniPath);

        string HostIP = iniFiles.IniReadValue("Server", "HostIP");
        string Port = iniFiles.IniReadValue("Server", "Port");
        string DBName = iniFiles.IniReadValue("Server", "DBName");
        string UserName = iniFiles.IniReadValue("Server", "UserName");
        string Password = iniFiles.IniReadValue("Server", "Password");

        mySqlUnit = new MySqlUnit(HostIP, Port, UserName, Password, DBName);
    }


    private void OnDestroy()
    {
        mySqlUnit.CloseSQL();
    }

查询一个表格:比如想要查24小时的温度统计:

 Dictionary<string, float> QueryWetHour(DateTime startTime, DateTime endTime, string cleanName)
    {
        int startTime_Stamp = DateTimeToStamp(startTime);
        int endTime_Stamp = DateTimeToStamp(endTime);

        string SQLstring = "";
        //如果在同一个月
        if (startTime.Year == endTime.Year && startTime.Month == endTime.Month)
        {
            string cTableName = TABLE_HEADER_WET + "tbl" + startTime.Year + startTime.Month;   //表名字
            SQLstring = string.Format("select b.nHour, b.hours, b.nAvg, b.nMax, b.nMin from (SELECT TIMESTAMPDIFF(hour,FROM_UNIXTIME(wet_time),FROM_UNIXTIME(unix_timestamp(NOW()))) as nHour, HOUR(FROM_UNIXTIME(wet_time)) hours,  avg(wet_value) as nAvg, max(wet_value) as nMax, min(wet_value) as nMin FROM {0} where wet_time BETWEEN {1} AND {2} AND clean_area='{3}' group by nHour, hours order by nHour desc) b ;", cTableName, startTime_Stamp, endTime_Stamp, cleanName);
        }
        else //如果不在同一个月
        {
            string cTableName1 = TABLE_HEADER_WET + "tbl" + startTime.Year + startTime.Month;  //表名字1
            string cTableName2 = TABLE_HEADER_WET + "tbl" + endTime.Year + endTime.Month;      //表名字2
            string sqlstring1 = string.Format("select a.nHour, a.hours, a.nAvg, a.nMax, a.nMin from (SELECT TIMESTAMPDIFF(hour,FROM_UNIXTIME(wet_time),FROM_UNIXTIME(unix_timestamp(NOW()))) as nHour, HOUR(FROM_UNIXTIME(wet_time)) hours, avg(wet_value) as nAvg, max(wet_value) as nMax, min(wet_value) as nMin FROM {0} where wet_time BETWEEN {1} AND {2} AND clean_area='{3}' group by nHour, hours order by nHour desc) a union ", cTableName1, startTime_Stamp, endTime_Stamp, cleanName);
            string sqlstring2 = string.Format("select b.nHour, b.hours, b.nAvg, b.nMax, b.nMin from (SELECT TIMESTAMPDIFF(hour,FROM_UNIXTIME(wet_time),FROM_UNIXTIME(unix_timestamp(NOW()))) as nHour, HOUR(FROM_UNIXTIME(wet_time)) hours,  avg(wet_value) as nAvg, max(wet_value) as nMax, min(wet_value) as nMin FROM {0} where wet_time BETWEEN {1} AND {2} AND clean_area='{3}' group by nHour, hours order by nHour desc) b ;", cTableName2, startTime_Stamp, endTime_Stamp, cleanName);
            SQLstring = sqlstring1 + sqlstring2;
        }

        DataSet dataSet2 = mySqlUnit.ExecuteString(SQLstring);
        DataTable table_wetDays = dataSet2.Tables[0];
        if (table_wetDays.Rows.Count > 0)
        {
            Dictionary<string, float> dicWetHour = new Dictionary<string, float>();
            for (int i = 0; i < table_wetDays.Rows.Count; i++)
            {
                int hours = int.Parse(table_wetDays.Rows[i][0].ToString());
                float avg = float.Parse(table_wetDays.Rows[i][2].ToString());

                DateTime dateTime = DateTime.Now.AddHours(-hours);
                string key = string.Format("{0}/{1} {2}:00", dateTime.Month, dateTime.Day, dateTime.Hour);
                dicWetHour.Add(key, avg);
            }

            return dicWetHour;
        }

        return null;
    }

这里代码其实不重要,主要还是SQL语句。 DataSet dataSet2 = mySqlUnit.ExecuteString(SQLstring); 自定义SQL语句,执行后 返回 DataSet 类型实例。表格结果就在里面,然后操作就可以啦。

SQL语句 可以先在Navicat里先试验下,看看数据格式。
我这里是查询固定 时间戳里温度,然后找出最高温度,最低温度,平均温度。并且根据距离当前时间的长度 排序~~
在这里插入图片描述

五.结果和小结

查到的结果,我是返回了 字典。然后用于显示:
在这里插入图片描述
小结:unity对于mysql支持是很好的。相应的dll都有,网上的教程也很多。具体的执行却要自己写SQL语句了,增删改查。我这边只做了查的功能,其他的功能也是用SQL语句自己自定义的。当然,也可以自己写下 通用的执行语句,用来嵌套。
这次的源码,就不放网盘了。因为是公司的项目,我自己其实没有打草稿 直接写的。

Unity连接数据库mysql全过程+可能遇到的问题与解决方案 第二步:在Assets文件夹下创建一个新的文件夹(Plugins),然后将准备的dll文件放置进去(这里我作为测试只放 Mysql.Data.dll)安装完成后需要查看mysql的版本,打开终端(管理者身份运行),输入以下语句登录mysql,查看MySQL版本;第三步:在Assets文件夹下创建一个新的文件夹(Scripts),然后创建一个C#文件:ConnectMySql。为了搭建unity连接mysql的环境,需要其中的Mysql.Data.dll文件。Mysql.Data.dll:在官网下载, 阅读详情

相关推荐

Unity3d和连接MySQL数据库实现登陆注册等功能

最近做的项目正好需要实现登陆注册功能,大致登录页面如下所示: 其中增加了注册和忘记密码功能,注册界面如下所示: 我的mysql表格 那么开始用代码实现我们的功能吧! 我使用了简单的UI框架,可以快速拿到所需要的控件,不用一个一个拖动,还可以显示和关闭面板。 ////注册登录按钮,如果登陆成功切换到主场景 GetComponentFromChild<Button>("Lo...

weixin_43374476的博客 5086

【Unity3D】Unity 3D 连接 MySQL 数据库

Unity连接MySQL数据库,先导入所需要的插件,然后写连接MySQL数据库的语句

weixin_43729127的博客 5406

Unity3d通过PhotonServer访问MySQL数据库

接着上一篇文章内容继续开发上一片篇文章介绍到NHibernate与数据库交互

Kiboo的博客 3157

Unity2020连接MySQL数据库

重新梳理一下这篇帖子(算是第三次较大变动的修正补充)。本文章涉及Unity 3D版本:2020.3.20f1、MySQL5.7、MySQL8.0。(经过亲测,2019-2022均适用)

weixin_43822095的博客 1万+

Unity连接MySQL数据库 - 实现Unity3D中的实用功能

综上所述,通过使用C#编程语言和MySQL连接库,我们可以在Unity中连接MySQL数据库,并实现各种实用功能,如查询、插入和更新。在Unity中,我们需要创建一个C#脚本来处理与数据库的连接和交互。在Unity中连接MySQL数据库,我们可以使用C#编程语言和MySQL连接库。方法中,我们设置了MySQL服务器地址、数据库名称、用户名和密码,并通过连接字符串创建了一个MySQL连接。方法中,我们首先建立了与MySQL数据库的连接。方法中,我们执行了一个非查询操作,例如插入和更新。

QscFramework的博客 1442

【Unity3D进阶4-14】Unity3D 连接MySQL数据库

一、目录 【Unity3D从入门到进阶】文章目录及设置这个专栏的初衷

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 4055

Unity3D 连接MySQL数据库笔记4-Unity3d代码

新建Unity3D项目 新建一个 Plugins文件夹 把所需要的DLL放到 Plugins中 新建C#脚本 命名为ToMysql.cs   不多说了 ,直接上代码,很简单  有注释 ,大家一看就明白了   using UnityEngine; using System; using System.Collections; using System.Data; usi

SuperLinmeng的博客 1628

Unity3D与MySQL数据库交互实践指南

Unity3D引擎是一个多平台的游戏开发工具,自从2005年首次发布以来,它已经成为游戏开发者不可或缺的一部分。从2D到3D,从桌面到移动,甚至到虚拟现实,Unity3D提供了一套统一的开发环境和一套强大的功能集,能够满足各种类型游戏和应用的开发需求。在技术上,Unity3D的核心优势在于其高效的渲染引擎、物理模拟、音频处理和跨平台发布的能力。Unity3D不仅仅局限于游戏开发,其跨学科的应用让它在影视动画、建筑可视化、教育、医疗模拟等多个领域都取得了显著成就。

weixin_42514750的博客 1140

Unity3D 连接MySQL数据库笔记2-所需要的DLL

Unity3D连接MySQL数据库所需要的DLL 纠结了很久终于搞定  需要一下DLL  D:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity 目录下的 I18N.dll   I18N.West.dll   I18N.CJK.dll  D:\Program Files\Unity\Editor\Data\Mono\lib\mono

SuperLinmeng的博客 1807

Unity3D与MySQL数据库交互的DLL实现指南

Unity3D是一个强大的跨平台游戏开发引擎,它允许开发者使用C#等编程语言创建2D、3D、虚拟现实(VR)以及增强现实(AR)游戏。Unity提供了丰富的工具集,包括物理引擎、渲染引擎、粒子系统和脚本框架,使得开发人员能够构建高质量的游戏内容。在游戏开发中,常见的数据库类型主要包括关系型数据库和非关系型数据库(NoSQL)。关系型数据库:如MySQL、PostgreSQL等,它们通过表格形式存储数据,并通过关系映射来组织数据。

weixin_32661831的博客 1200

Unity3D实现MySQL数据库连接的DLL集成指南

htmltable {th, td {th {pre {简介:在Unity 3D开发中,要实现与MySQL数据库的交互,需要借助.NET框架的MySql.Data.dll等第三方DLL文件。本文将介绍如何将这些DLL文件添加到Unity项目中,并通过C#脚本使用MySqlClient类库建立连接和执行SQL命令。同时,还会说明如何准备不同平台所需的DLL版本,以及需要注意的数据库服务运行和防火墙设置。

weixin_42518334的博客 1007

Unity3D 连接MySQL数据库笔记1-安装MySQL数据库

本教程使用的是MySQL5.0版本 一路下一步安装,到3个选项这里   选择自定义     在“MySQL Server(MySQL服务器)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上   直接下一步

SuperLinmeng的博客 1238

AI 推理与服务(AI Inference and Serving)

AI 推理和服务是现代分布式系统中的重要组成部分。通过合理应用 AI 推理和服务的最佳实践,可以显著提高系统的智能性和用户体验。本章介绍了 AI 推理和服务的核心概念、最佳实践以及在分布式系统中的应用,希望这些内容能帮助您构建更智能、更高效的分布式系统。

蜗牛沐雨 1381

Unity3D 学习笔记(四) Unity连接MySQL数据库

这两天实现Unity连接到数据库搞到我快疯了,一直提示“由于目标计算机积极拒绝,无法连接”,后来发现是dll的路径设置有问题以及一些库的使用问题,哎,吐血捂脸。 1.首先安装MySQL 我安装的是mysql-installer-community-5.5.28.3.exe(可以访问http://www.mysql.com/downloads/mysql/免费下载) 安装成功后

sysuhezshan的专栏 1万+

网络抓包实战:如何捕获与解析802.1Q VLAN标签报文

在网络通信中,数据包是信息传输的基本单元,而VLAN(虚拟局域网)技术通过在数据链路层插入802.1Q标签,实现了网络流量的逻辑隔离与高效管理。其核心原理是在标准以太网帧头中嵌入4字节的VLAN标识,使交换机能够根据VID(VLAN ID)进行精准转发。掌握VLAN报文的捕获与解析技术,对于网络故障排查、安全审计和性能优化具有重要价值,尤其在需要验证网络隔离策略或诊断Trunk链路异常时。本文聚焦于使用Wireshark工具,结合端口镜像等实操方法,详细演示如何抓取并解读携带802.1Q标签的原始报文,帮助

weixin_33417488的博客 381

机械革命重装Win11详细教程

通过以上步骤,你可以在机械革命电脑上成功重装Windows 11。虽然整个过程可能看起来有些复杂,但只要你按照步骤逐一进行,就能够顺利完成安装并享受到全新的操作系统带来的便利和性能提升。希望本文能够帮助到你,如果你有任何问题或疑问,请随时联系我们的技术支持团队。

mmoo_python的博客 3129

Unity3D 连接MySQL数据库笔记3-SQL建表

打开  Navicat MySQL管理工具 连接到数据库 选择 test 数据库  点击 查询  输入对应的 sql命令 create table tuser( uname varchar(20) not null primary key, upwd varchar(20) not null ); create table p_info(

SuperLinmeng的博客 1387

MOLDFLOW 2012模流分析基础到实战视频教程

├ 1第一讲MF软件安装与界面定制及模流前期准备工作及分析流程介绍 ├ 2第二讲MF建模工具条命令讲解与图层的运用 ├ 3第三讲MF网格类型与适应范围及网格划分、诊断、修复与统计 ├ 4第四讲MF中CAD doctor 模块对导入模型的修复方法与实例 ├ 5第五讲MF中常见各种流道浇口及水路的建模方法与外部导入方法上 ├ 6第六讲MF产品模型导入CAD DOCTOR与修复 ├ 7第七讲MF分析序列设定与网格的划分与诊断及修复 ├ 8第八讲MF材料选择与成型工艺参数设定 ├ 9第九讲MF创建浇注系统:主流道、

QQ_1987083845的博客 2543

如何php session,php 如何开启session

iOS 汉字拼音获取汉字的拼音 #import @interface NSString (Utils) /*** 汉字的拼音** @retur ...sql 将8位字符串转换成日期型将8位字符串转换成日期型,方法如下: ),)mysql 账户操作1.授权 mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified b...

weixin_39953356的博客 284

OpenOCD入门到精通:第28章 综合实战:RISC-V 调试

RISC-V调试实战摘要 本文介绍了RISC-V调试规范及其在OpenOCD中的实现。主要内容包括: RISC-V Debug规范的两个版本(0.11和0.13)及其差异,OpenOCD通过自动检测DTMCS寄存器版本号选择对应驱动实现。 RISC-V调试架构的分层设计,包含DTM、Debug Module、Program Buffer等核心组件,以及三种内存访问方式(progbuf、sysbus、abstract)。 以GD32VF103为例的实战调试配置,包括硬件连接、OpenOCD配置文件编写和GDB

从事嵌入式linux android驱动开发,拥有全栈能力 282

[案例四] 智能填写属性工具(支持装配组件还有建模实体属性的批量创建、编辑)

本次案例主要是对上次导出自动导出BOM的一个前处理,要想导出属性,首先的有属性。于是本着学习的态度进行制作,可能有些功能有点别扭(支持装配环境下组件属性的批量填写,支持建模环境下的实体(不包括装配组件实体)——为了减负我把其过滤掉了,一般没人会往装配体里添加进行建模吧,但是不免有奇葩,哈哈哈)。

weixin_47753171的博客 1980

Unity3D数据可视化控件的简单实现-Mysql数据库

    项目实现的是比较简易的数据可视化,用到Mysql数据库和Unity3D中的Graph_Maker.    直接上实现图,通过输入数据库名、账号、密码、数据表名跳转    展示效果为Graph_Maker中的折线图,X轴和Y轴坐标内容可以手动更改,鼠标指针滑动到数据点时能够显示更多信息。(即为绿底白字内容)一、数据读入    利用Mysql.Dll实现与Mysql数据库的连接,启动连接后使用...

太玄经的博客 1万+

零停机更新黑科技:Spring Boot应用实现无缝升级的实战指南

本文介绍了基于Spring Boot和Tomcat实现零停机更新的技术方案,通过动态端口切换和优雅关闭机制,确保服务更新过程中业务不中断。文章详细解析了核心原理,包括内嵌Tomcat的工作机制、零停机更新的三大技术基石(端口动态切换、优雅关闭和进程接管)。同时提供了完整的Java实现代码,重点展示了端口动态检查、参数动态调整、旧进程优雅终止等关键逻辑。该方案适用于高可用系统升级场景,能够有效避免传统部署方式导致的服务中断问题,实现100%无感知的应用更新。

墨夶的博客 818

Unity3D连接MySQL(一)使用篇

目录 1. Navicat 建数据库(这里不介绍MySQL跟Navicat安装以及环境配置) 2. 导入UnityMySQL.unitypackage Unity3D连接MySQL(二)讲解篇 前期开发时候,一般需要先在本地 mysql 模拟数据功能,功能开发完毕后,再与后台对接,本篇介绍如何使用 Unity 连接、访问 mysql。(附件在文末) Unity 2018.3.14 首...

Cou流氓也要有文化的博客 2893

专栏三:解析spatialCNV的使用

文章Spatially resolved clonal copy number alterations in benign and malignant tissue发在natur

m0_58549466的博客 1251

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Unity3D开发之使用MySql数据库

最近学了好多东西。因为看到了中年危机那篇文章,感觉自己不能偷懒了,必须要不断学习。好了,接下来是我在使用MySql的心得。 首先,在项目里想要使用MySql,必须添加MySql.Data.dll。只有对他引用才能使用程序连接数据库。(数据库的安装很简单,自行百度)。首先我们需要定义连接数据库的字符串: public const string CONNECTIONSTRING...

Jay W的博客 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: Unity3D笔记——Socket粘包分包的理解和最简单的处理方式
下一篇: SCP文件传输
YYL_Debug
博客等级 码龄10年 14粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值