项目场景:
跟着学习视频通过做multiplayer来学习socket联网完成游戏,需要将c#的table组件获取的数据注册到mysql中记录出现了一些问题。
问题描述:
好不容易将mysql连接配置成功以后,仍然无法将用户数据导入。
原因分析:
MySQL语句的书写出现错误,导致无法成功。
解决方案:
2021.04.06
1、尝试自己修改语句不成功。
2、搜索mysql有关insert的相关语句发现两种方法。
方法一:(可插入多条语句)
语法: insert into 表名(列名,列名......) values(值1, .......);
方法二:(只可插入单条语句)
语法:insert into 表名 set 列名=值,列名=值.........
然后得到了初步的成功,可以在每次打开服务器端并连接客户端以后插入数据库一条用户信息了。
但是只能插入一条....(又是新的bug orz...)
3、在检查整体代码之后,发现在对服务器端关闭时的close方法里加入server.RemoveClient(this); 好像就可以多个注册了,但具体的原因不明。
将client从已经记录下的clientList移除后可以进行多次注册。
终于终于!!注册成功了,数据库的数据也都更新了。
然而就在我为了胜利沾沾自喜的时候....
…………他来了他来了,他带着新的问题走来了qwq。
究竟为什么要这么对我啊啊啊啊,今天累了,散会。
(虽然但是,还是记录一下错误,明天再找。)
2021.04.07
1、接着昨天的bug我开始了漫长的旅途,我首先研究了整个HandleRequest的进程。
发现真的...没有任何问题直到最后一步!
那我就猜应该是requestDict里面没有我要的actionCode!所以我又开始找我客户端的消息的接收...
2、检查客户端和服务器端消息的接收查找。
然而我发现!!消息的接收和解析每次都成功进行了,就是没给我加到requestDict里面,我又反复检查了客户端和服务器端数据的传输无果。
服务器端的消息处理很成功,数据也加入了mysql!
于是我开始对比两个消息处理的代码...发现好像是在add方法上出了问题。
3、我开始检查actionCode的传入!
通过Debug输出我发现 AddRequest并没有被调用!!
此时此刻我感到自己离成功越来越近...
通过一次又一次又一次又一次的查找引用……
我终于锁定了罪魁祸首!
经过我的反复尝试!这个Start方法没有被调用...
啊啊啊啊,枉费我又是看消息的处理又是检查消息的接收和传递的!!
在我修改了Start的方法后!终于!!
今天真是为了这个bug煞费苦心,
这么多行数据库的数据就知道我试了多少次了..orz
花费了我将近两个小时吧...
下次再也不敢写代码粗心了..要了老命了。
明天终于可以进行下一步的学习了(手舞足蹈~)
散会!