Unity MySql安装部署与Unity连接 下篇

一、前言

        上篇讲到了如何安装与部署本地MySql;本篇主要讲Unity与MySql连接、创建表、删除表,然后就是对表中数据的增、删、改、查等操作。再讲这些之前会说一些安装MySql碰到的一些问题和Unity连接的问题。

        当把本地MySql部署好之后,我们可能会遇到只有本机能访问的问题,如果碰到这个问题,我们需要把当前数据库的权限修改一下,如图所示,这是我们新建一个数据库后自动生成的一个user表,里面包含一些访问权限,如果没开放权限,那么当我们在局域网下访问装有mysql的机器时会发现只有本机可以访问到,其他机器访问不了,这时候我们就需要执行一些命令来修改访问权限。

第一步:cd MySql路径

第二步:登录 mysql -u root -p

第三步:进入数据库 use mysql

第四步:select user,host from user;

第五步:uptate user set host='%' where user='root';

这样就ok了,最后在刷新一下

flush privileges; 这样就可以在局域网下,所有机器都能访问到这个数据库

二、Unity连接MySql

        可以先在网上找到与自己.net或者mysql对应版本的MySql.Data.dll文件,将这个文件下载下来放到Unity Plugins文件夹下,我这里用的是5.7.38版本

        下一步就是熟悉MySql的命令语句,这个可以去MySql官网查询,这里就不多讲了;直接来看一下unity怎么连接MySql和对数据库中的数据进行操作。

        连接MySql:

//连接类对象MySqlConnection msc;/// <summary>/// 连接数据库/// </summary>/// <param name="serverIP">IP地址</param>/// <param name="port">端口</param>/// <param name="user">用户名</param>/// <param name="passwd">密码</param>/// <param name="database">数据库名称</param>/// <param name="format">字体默认UTF8</param>public void Connect(string serverIP, string port, string user, string password, string sqlName){string connectStr = $"server = {serverIP};port = {port};user = {user};database = {sqlName};password = {password};charset = utf8";msc = new MySqlConnection(connectStr);}

        打开和关闭连接:

        /// <summary>/// 打开数据库连接/// </summary>public void Open(){msc.Open();}/// <summary>/// 关闭数据库连接/// </summary>public void Close(){msc.Close();}

        完成上述操作,我们基本上就可以连接、打开、关闭数据库了。再下面就是对数据库中表的一些操作。

        表    查找  -->  创建  -->  删除

#region 表 --> 查找 --> 创建  --> 删除/// <summary>/// 查找表是否存在/// </summary>/// <param name="tablename"></param>/// <returns></returns>public bool IsTableExist(string tablename){bool tableExists = false;string query = "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @TableName";using (MySqlCommand command = new MySqlCommand(query, msc)){command.Parameters.AddWithValue("@TableName", tablename);tableExists = Convert.ToInt32(command.ExecuteScalar()) > 0;}return tableExists;}/// <summary>/// 创建表/// </summary>/// <param name="name"></param>/// <param name="property"></param>/// <param name="type"></param>/// <returns></returns>public int CreateTable(string name, string[] property, string[] type){string query = $"CREATE TABLE IF NOT EXISTS UserMgr (ID VARCHAR(255), Type VARCHAR(255), UserName VARCHAR(255), Password VARCHAR(255))";return ExecuteNonQuery(query);}/// <summary>/// 删除表/// </summary>/// <param name="tableName"></param>/// <returns></returns>public int DeleteTable(string tableName){string query = $"DROP TABLE IF EXISTS {tableName};";return ExecuteNonQuery(query);}#endregion

       

        增:

#region 增/// <summary>/// 添加数据/// </summary>/// <param name="ID"></param>/// <param name="type"></param>/// <param name="username"></param>/// <param name="password"></param>public void AddTableData(string ID, string type, string username, string password){string sql = "insert into usermgr(ID,Type,UserName,Password) values('" + ID + "','" + type + "','" + username + "','" + password + "')";MySqlCommand cmd = new MySqlCommand(sql, msc);//返回更改数据行数int result = cmd.ExecuteNonQuery();Debug.Log("添加数据成功:"+ result);}#endregion

        删:

 #region 删/// <summary>/// 删除指定ID的数据/// </summary>/// <param name="ID"></param>public void DeleteTableData(string ID){//删除的sql命令,这里是删除player中id=2的一行数据string sql = $"delete from usermgr where ID={ID}";                                     MySqlCommand cmd = new MySqlCommand(sql, msc);int result = cmd.ExecuteNonQuery();Debug.Log("删除数据成功:" + result);}#endregion

        改:

#region 改/// <summary>/// 根据id去修改 用户类型 用户名 用户密码/// </summary>/// <param name="tableName"></param>/// <param name="ID"></param>/// <param name="username"></param>/// <param name="password"></param>public void AmendTableData(string ID, string type, string username, string password){//更新string sql = $"update UserMgr set UserName='{username}',Password='{password}',Type='{type}' where ID={ID}";//更改的sql命令MySqlCommand cmd = new MySqlCommand(sql, msc);//返回值是数据库中修改的行数int result = cmd.ExecuteNonQuery();Debug.Log("更新数据成功:" + result);}#endregion

        查:

#region 查/// <summary>/// 查找所有表中所有的数据/// </summary>public List<UserData> FindTableData(){string query = "SELECT * FROM usermgr";List<UserData> userDatas = new List<UserData>();using (MySqlCommand command = new MySqlCommand(query,msc)){using (MySqlDataReader reader = command.ExecuteReader()){while (reader.Read()){UserData data = new UserData();data.id = int.Parse(reader.GetString("ID"));data.type = int.Parse(reader.GetString("Type"));data.username = reader.GetString("UserName");data.password = reader.GetString("Password");//Debug.LogError(data.id + data.type + data.username + data.password);userDatas.Add(data);}}}return userDatas;}#endregion

以上就是Unity与MySql连接进行一些数据库的基本操作。喜欢的小伙伴点个赞、关注一下吧,写这么多不容易。下面是完整的代码及用法。

完整代码:

        var mySql = new SqlHelper();mySql.Connect("192.168.3.250","3306","root","root","kcsql");mySql.Open();//查找表if (!mySql.IsTableExist("UserMgr")){//创建表mySql.CreateTable("UserMgr", new[] {"Type", "User", "Password"}, new[] {"varchar", "varchar", "varchar"});}//删除表//mySql.DeleteTable("UserMgr");//增//mySql.AddTableData("2","1","lisi","123456");//删//mySql.DeleteTableData("2");//改//mySql.AmendTableData("0","0","pqy","pqy666");//查//mySql.FindTableData();mySql.Close();
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Data;
using MySql.Data.MySqlClient;
using System;namespace KC.MySql
{public class SqlHelper{ string connectStr;//连接类对象MySqlConnection msc;/// <summary>/// 连接数据库/// </summary>/// <param name="serverIP">IP地址</param>/// <param name="port">端口</param>/// <param name="user">用户名</param>/// <param name="passwd">密码</param>/// <param name="database">数据库名称</param>/// <param name="format">字体默认UTF8</param>public void Connect(string serverIP, string port, string user, string password, string sqlName){connectStr = $"server = {serverIP};port = {port};user = {user};database = {sqlName};password = {password};charset = utf8";msc = new MySqlConnection(connectStr);}/// <summary>/// 打开数据库连接/// </summary>public void Open(){msc.Open();}/// <summary>/// 关闭数据库连接/// </summary>public void Close(){msc.Close();}#region 表 --> 查找 --> 创建  --> 删除/// <summary>/// 查找表是否存在/// </summary>/// <param name="tablename"></param>/// <returns></returns>public bool IsTableExist(string tablename){bool tableExists = false;string query = "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @TableName";using (MySqlCommand command = new MySqlCommand(query, msc)){command.Parameters.AddWithValue("@TableName", tablename);tableExists = Convert.ToInt32(command.ExecuteScalar()) > 0;}return tableExists;}/// <summary>/// 创建表/// </summary>/// <param name="name"></param>/// <param name="property"></param>/// <param name="type"></param>/// <returns></returns>public int CreateTable(string name, string[] property, string[] type){string query = $"CREATE TABLE IF NOT EXISTS UserMgr (ID VARCHAR(255), Type VARCHAR(255), UserName VARCHAR(255), Password VARCHAR(255))";return ExecuteNonQuery(query);}/// <summary>/// 删除表/// </summary>/// <param name="tableName"></param>/// <returns></returns>public int DeleteTable(string tableName){string query = $"DROP TABLE IF EXISTS {tableName};";return ExecuteNonQuery(query);}#endregion#region 增/// <summary>/// 添加数据/// </summary>/// <param name="ID"></param>/// <param name="type"></param>/// <param name="username"></param>/// <param name="password"></param>public void AddTableData(string ID, string type, string username, string password){string sql = "insert into usermgr(ID,Type,UserName,Password) values('" + ID + "','" + type + "','" + username + "','" + password + "')";MySqlCommand cmd = new MySqlCommand(sql, msc);//返回更改数据行数int result = cmd.ExecuteNonQuery();Debug.Log("添加数据成功:"+ result);}#endregion#region 删/// <summary>/// 删除指定ID的数据/// </summary>/// <param name="ID"></param>public void DeleteTableData(string ID){//删除的sql命令,这里是删除player中id=2的一行数据string sql = $"delete from usermgr where ID={ID}";                                     MySqlCommand cmd = new MySqlCommand(sql, msc);int result = cmd.ExecuteNonQuery();Debug.Log("删除数据成功:" + result);}#endregion#region 改/// <summary>/// 根据id去修改 用户类型 用户名 用户密码/// </summary>/// <param name="tableName"></param>/// <param name="ID"></param>/// <param name="username"></param>/// <param name="password"></param>public void AmendTableData(string ID, string type, string username, string password){//更新string sql = $"update UserMgr set UserName='{username}',Password='{password}',Type='{type}' where ID={ID}";//更改的sql命令MySqlCommand cmd = new MySqlCommand(sql, msc);//返回值是数据库中修改的行数int result = cmd.ExecuteNonQuery();Debug.Log("更新数据成功:" + result);}#endregion#region 查/// <summary>/// 查找所有表中所有的数据/// </summary>public List<UserData> FindTableData(){string query = "SELECT * FROM usermgr";List<UserData> userDatas = new List<UserData>();using (MySqlCommand command = new MySqlCommand(query,msc)){using (MySqlDataReader reader = command.ExecuteReader()){while (reader.Read()){UserData data = new UserData();data.id = int.Parse(reader.GetString("ID"));data.type = int.Parse(reader.GetString("Type"));data.username = reader.GetString("UserName");data.password = reader.GetString("Password");//Debug.LogError(data.id + data.type + data.username + data.password);userDatas.Add(data);}}}return userDatas;}#endregionpublic int ExecuteNonQuery(string SQLString){using (MySqlCommand cmd = new MySqlCommand(SQLString, msc)){try{int rows = cmd.ExecuteNonQuery();return rows;}catch (MySqlException E){throw new Exception(E.Message);}finally{//cmd.Dispose();}}}}/// <summary>/// 用户信息类/// </summary>public class UserData{public int id;public int type;public string username;public string password;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 小程序获取WiFi列表

<template><view ><button click"getWifiList">获取WiFi列表</button><scroll-view:scroll-top"scrollTop"scroll-yclass"content-pop"><viewclass"itemInfo"v-for"(item, index) in wifiList&…

网络原理(应用层、传输层)

文章目录 一、应用层1.1 自定义协议1.2 通用协议XMLJSONprotobuf 二、传输层2.1 UDP协议2.2 TCP协议协议端格式及解析可靠性机制确认应答超时重传连接管理&#xff08;三次握手&#xff0c;四次挥手&#xff09;流量控制拥塞控制 效率机制滑动窗口延迟应答捎带应答 粘包问题TCP…

3月产品更新来袭,快来看有没你期待的功能

亮点更新一览 增强制作报表易用性&#xff0c;提升用户体验&#xff0c;如仪表盘图层锁定保持原有层级、即席查询支持批量选择表字段。 增强报表展示和分析能力&#xff0c;满足更多项目需求&#xff0c;如仪表盘表格支持配置是否显示分析菜单按钮、Web电子表格新增多选输入…

Unity(MVC思想)

MVC 一下演示使用MVC和不使用MVC的做法区别。 前两个没有使用MVC 主面板逻辑&#xff1a; mainPanel是该脚本名字 每个场景中不一定存在该面板&#xff0c;单纯的显隐需要去手动挂载过于麻烦。 所以自己读取创建面板出来(每个场景仅创建一次)&#xff0c;存下该面板&#xf…

车载平板丨车载数据终端是什么,如何在农机领域发挥作用

车载数据终端是指一种能够获取和处理车辆及其周边环境信息的设备&#xff0c;它集成了GPS导航、行车记录仪、车况诊断、通信等功能&#xff0c;能够实时监测车辆的位置、速度、行驶路线、油耗等数据&#xff0c;为车辆管理和运营提供数据支持。在农机领域&#xff0c;车载数据终…

C++ //练习 11.16 使用一个map迭代器编写一个表达式,将一个值赋予一个元素。

C Primer&#xff08;第5版&#xff09; 练习 11.16 练习 11.16 使用一个map迭代器编写一个表达式&#xff0c;将一个值赋予一个元素。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /*************************************…

负荷预测 | Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测&#xff1b; 2.单变量时间序列数据集&#xff0c;采用前12个时刻预测未来96个时刻的数据&#xff1b; 3.excel数据方便替换&#xff0c;运行环境matlab…

Ant Desgin Vue Tree Tab 个性化需求

背景 个人对前端不是很熟&#xff0c;或者说过目就忘&#xff0c;但是对前端还要求不少&#xff0c;这就难搞了。 使用的前端是Mudblazor和ant design vue, Mudblazor 还没有开始搞&#xff0c;现在先用ant design vue&#xff0c;版本是vue3&#xff0c; ant design vue 4版…

OSPF 开放式最短路径优先协议

目录 技术产生原因&#xff1a;因为RIP存在不足 OSPF优点&#xff1a; RIPV2和OSPFV2比较&#xff1a; 相同点&#xff1a; 不同点&#xff1a; OSPF的结构化部署 --- 区域划分 区域划分的主要目的&#xff1a; 区域边界路由器 --- ABR &#xff1a; 区域划分的要求&am…

【静态分析】静态分析笔记03 - 数据流分析(应用)

参考&#xff1a; 【课程笔记】南大软件分析课程3——数据流分析应用&#xff08;课时3/4&#xff09; - 简书 ---------------------------------------------------------------------------- 1. 数据流分析总览 may analysis: 输出可能正确的信息&#xff08;需做 over-…

【感谢】心怀感恩,共赴知识之旅——致每一位陪伴我突破百万总访问量的您

小伙伴朋友们&#xff1a; 此刻&#xff0c;我怀着无比激动与深深感激的心情&#xff0c;写下这篇特别的博文。今天&#xff0c;我的CSDN总访问量成功突破了百万大关&#xff0c;这不仅是一个数字的跨越&#xff0c;更是你们对我的支持、信任与鼓励的有力见证。在此&#xff0…

C语言学习笔记之操作符篇

目录 算术运算符 移位操作符 整型在内存中的存储&#xff08;补充知识&#xff09; ​编辑左移操作符 右移操作符 位操作符 赋值操作符 复合赋值操作符 单目操作符 关系操作符 逻辑操作符 && 与 || 的计算特点 条件操作符 逗号表达式 下标引用操作符 函…

Canal 同步mysql 到es 日期格式报错解决

第一步&#xff1a;下载源码alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 (github.com) 第二步&#xff1a;编辑源码&#xff08;client-adapter下面的clinet-adapter.escore)&#xff1a; com.alibaba.otter.canal.client.adapter.es.core.support.ESSyncUt…

聚丙烯PP它的化学特性是什么? UV胶水能够粘接聚丙烯PP吗?

聚丙烯PP它的化学特性是什么? UV胶水能够粘接聚丙烯PP吗&#xff1f; 聚丙烯&#xff08;Polypropylene&#xff0c;简称PP&#xff09;是一种热塑性聚合物&#xff0c;属于聚烯烃类塑料之一。以下是聚丙烯的一些化学特性&#xff1a; 1. 分子结构&#xff1a; 聚丙烯是由丙烯…

【赛题】2024年MathorCup数学应用挑战赛C题赛题发布

2024年MathorCup数学应用挑战赛——正式开赛&#xff01;&#xff01;&#xff01; C题 物流网络分拣中心货量预测及人员排班 赛题已发布&#xff0c;后续无偿分享各题的解题思路、参考文献、完整论文可运行代码&#xff0c;帮助大家最快时间&#xff0c;选择最适合是自己的赛…

[CSS]布局

盒子就是把网站分割成一小块一小块的吧&#xff0c;然后方便移动或者管理 背景 属性名描述background-color设置元素的背景颜色。background-image设置元素的背景图片。背景图片与背景颜色同时设置时&#xff0c;则图片覆盖颜色。写法如下&#xff1a;background-image: url(&…

2024年mathorcup数学建模思路及论文助攻

题目B 题 甲骨文智能识别中原始拓片单字自动分割与识别 甲骨文是我国目前已知的最早成熟的文字系统&#xff0c;它是一种刻甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值&#xff0c;不仅对中国文明的起源具有重要意义&#xff0c;也对世界文明的研究有着深远影响。在我…

微信小程序-接入sse数据流并实现打字机效果( ChatGPT )

从流中获取的数据格式如下 小程序调用SSE接口 const requestTask wx.request({url: xxx, // 需要请求的接口地址enableChunked: true, // enableChunked必须为truemethod: "GET",timeout: 120000,success(res) {console.log(res.data)},fail: function (error) {//…

农场大乐斗游戏演示

功能介绍 农场系统 种菜操作&#xff1a;用户可以在农场中种植农作物&#xff0c;并进行浇水、杀虫、除草等维护操作。干旱、虫害、杂草都会影响农作物的生长速度和产量。农作物成熟后&#xff0c;用户需要及时收取&#xff0c;否则会在24小时后枯死&#xff0c;但可通过观看…

python通过url爬取视频资源到本地

很久之前我写过一篇通过url爬取图片地址的博文&#xff0c;说实在的&#xff0c;利用python实现自动化爬取资源确实很香。我本身是搞前端的。所以对py只是简单看了下&#xff0c;并不算多了解。因此之前写的那篇博文内容也很简单。简单到新手一看就会&#xff0c;一学就能用。方…