unity3d使用mysql数据库输入中文显示乱码怎么解决

您所在的位置:网站首页 mysql输入不了中文字符 unity3d使用mysql数据库输入中文显示乱码怎么解决

unity3d使用mysql数据库输入中文显示乱码怎么解决

2023-07-07 05:48| 来源: 网络整理| 查看: 265

① 首先把MySQL的服务停掉 在运行窗口输入:net stop mysql ② 把服务器和客户端的字符集改成自己想用的字符集:GB2312或是utf8等…… 具体 *** 作为:打开mysql安装目录下的myini.tet; 找到default-character-set,将其改为自己想用的字符集:GB2312或...

你的数据已经保存在数据集ds中了.

可以通过debug.log()或print() 函数显示在console窗体上以供调试. 这两个函数是等价的.

下面是接着你的代码, 显示数据的示例:

void Start () {

//省略...

adapter.Fill(ds)   

DataTable tbl = ds.Table[0]   

foreach(DataColumn col in tbl.Columns)   

    debug.log(col.ColumnName)   

 }

本文将对NHibernate数据进行简单封装,方便在PhotonServer服务器中进行调用

[csharp] view plain copy

using NHibernate

using NHibernate.Cfg

using MyGameServer.Domain

using NHibernate.Criterion

using System.Collections.Generic

namespace MyGameServer.Helper

{

public static class NHibernateHelper

{

private static ISessionFactory sessionFactory = null

private static ISession session = null

public static ISession GetSession

{

get

{

if (sessionFactory == null)

{

Configuration cfg = new Configuration()

//解析固定路径配置文件nhibernate.cfg.xml

cfg.Configure()

//映射目标程序集 解析映射文件 Student.xml ......

cfg.AddAssembly(typeof(Student).Assembly)

//获取会话对象

sessionFactory = cfg.BuildSessionFactory()

}

session = sessionFactory.OpenSession()

return session

}

private set { }

}

//添加行

public static void AddDataT(T t)

{

using (ISession session = GetSession)

{

using (ITransaction transaction=session.BeginTransaction())

{

GetSession.Save(t)

transaction.Commit()

}

}

}

//添加列

public static void RemoveDataT(T t)

{

using (ISession session = GetSession)

{

using (ITransaction transaction = session.BeginTransaction())

{

GetSession.Delete(t)

transaction.Commit()

}

}

}

//通过ID获取对象

public static T GetDataByIdT(int id)

{

using (ISession session = GetSession)

{

using (ITransaction transaction = session.BeginTransaction())

{

T t = session.GetT(id)

transaction.Commit()

return t

}

}

}

/// summary

/// 通过名称获取对象

/// /summary

/// typeparam name="T"需要获取的对象/typeparam

/// param name="dataBaseName"在数据库中的列名称/param

/// param name="targetName"获取对象的目标名/param

/// returns/returns

public static T GetDataByNameT(string dataBaseName, string targetName)

{

using (ISession session = GetSession)

{

T t = session.CreateCriteria(typeof(T)).Add(Restrictions.Eq(dataBaseName, targetName)).UniqueResultT()

return t

}

}

/// summary

/// 得到表内的全部对象

/// /summary

/// typeparam name="T"/typeparam

/// returns/returns

public static ICollectionT GetAllUsersT()

{

using (ISession session = GetSession)

{

IListT ts = session.CreateCriteria(typeof(T)).ListT()

return ts

}

}

//查询是否有符合id和姓名相同的对象

public static bool VerifyUserT(params object[] arg)

{

using (ISession session = GetSession)

{

T t = session

.CreateCriteria(typeof(T))

.Add(Restrictions.Eq(arg[0].ToString(), arg[1]))//类属性名 属性值

.Add(Restrictions.Eq(arg[2].ToString(), arg[3]))

.UniqueResultT()

if (t == null)

{

return false

}

return true

}

}

/// summary

/// 更新数据表

/// /summary

/// typeparam name="T"数据表映射的对象/typeparam

/// param name="t"/param

public static void UpdateDataT(T t)

{

using (ISession session = GetSession)

{

using (ITransaction transaction=session.BeginTransaction())

{

session.Update(t)

transaction.Commit()

}

}

}

}

}

在主函数调用

[csharp] view plain copy

using NHibernate

using NHibernate.Cfg

using LJL.Domain

using LJL.Helper

namespace LJL

{

class Program

{

static void Main(string[] args)

{

Student sd = new Student { mID = 6, mName = "小张", mScore = 10 }

NHibernateHelper.AddData(sd)

}

}

}

运行程序,一切正常,打开SQLyog,在student数据表中添加一行数据

接下来就是在PhotonServer中调用,来实现与MySQL数据库交互

按图下将类、配置文件集成到类库中(注意需要修改下类和配置文件中的程序集及命名空间)

接下来就是在Unity3d游戏客户端中与PhotonServer通信进而访问本地数据库

在Unity3d客户端上创建UI(这里简单拖入输入框和按钮)

如下图创建脚本

我们的游戏有很多中请求(比如登入、注册请求等等)

所以都继承自BaseRequest

[csharp] view plain copy

using ExitGames.Client.Photon

using System.Collections

using System.Collections.Generic

using UnityEngine

public abstract class BaseRequest : MonoBehaviour

{

[HideInInspector]

//该请求的 *** 作类型

public Collective.OperationMode operationMode = Collective.OperationMode.Default

public virtual void Start() { }

public abstract void OnOperationRequest()

public abstract void OnOperationResponse(OperationResponse operationResponse)

}

这里博主简单的做了一下登录请求

[csharp] view plain copy

using ExitGames.Client.Photon

using System.Collections

using System.Collections.Generic

using UnityEngine

using UnityEngine.UI

public class LoginRequest : BaseRequest

{

//用户名

private InputField mInputName

//密码

private InputField mInputPassword

public override void Start()

{

operationMode = Collective.OperationMode.LOGIN

GameContext.GetInstance.AddRequest(this)

mInputName = GameObject.Find("IDInputField").GetComponentInputField()

mInputPassword = GameObject.Find("NameInputField").GetComponentInputField()

//登录按钮点击事件

GameObject.Find("LoginButton").GetComponentButton().onClick.AddListener(() = { OnOperationRequest() })

}

public override void OnOperationRequest()

{

GameContext.GetInstance.peer.OpCustom(

(byte)this.operationMode,

new Dictionarybyte, object { { (byte)Collective.ParameterMode.NAME, mInputName.text }, { (byte)Collective.ParameterMode.PASSWORD, mInputPassword.text } },

true

)

}

public override void OnOperationResponse(OperationResponse operationResponse)

{

Collective.OperationResult resultCode = (Collective.OperationResult)operationResponse.ReturnCode

if (resultCode == Collective.OperationResult.SUCCESS)

{

//登录成功

Debug.Log("用户登录成功")

}

else if(resultCode == Collective.OperationResult.FAIL)

{

//登录失败

Debug.Log("登录失败")

}

}

}

最后附上上篇博文GameContext脚本,在这里有些地方发生了更新

[csharp] view plain copy

using System.Linq

using System.Collections.Generic

using UnityEngine

using UnityEngine.UI

using ExitGames.Client.Photon

public class GameContext : MonoBehaviour,IPhotonPeerListener

{

/// summary

/// 存储 *** 作类型与请求

/// /summary

public DictionaryCollective.OperationMode, BaseRequest requestDic = new DictionaryCollective.OperationMode, BaseRequest()

public PhotonPeer peer

private static GameContext _instance

public static GameContext GetInstance

{

get

{

if (_instance == null)

{

_instance = GameObject.Find("GameContext").GetComponentGameContext()

}

return _instance

}

}

public void DebugReturn(DebugLevel level, string message)

{

}

//接收服务器发来的事件

public void OnEvent(EventData eventData)

{

switch (eventData.Code)

{

case 0:

//获取事件数据

object value = eventData.Parameters.FirstOrDefault(q = q.Key == 1).Value

Debug.Log(value.ToString())

break

default:

break

}

}

//接收响应数据(客户端发送了请求)

public void OnOperationResponse(OperationResponse operationResponse)

{

BaseRequest request = requestDic.FirstOrDefault(q = q.Key == (Collective.OperationMode)operationResponse.OperationCode).Value

if (request != null)

{

request.OnOperationResponse(operationResponse)

}

else

{

//获取响应数据失败

Debug.LogError("获取响应数据失败")

}

}

//连接状态发送改变

public void OnStatusChanged(StatusCode statusCode)

{

Debug.Log("数据连接状态发生的改变:" + statusCode)

}

private void Start()

{

//传输协议UDP 、 通过Listener接收服务器端的响应

peer = new PhotonPeer(this, ConnectionProtocol.Udp)

//连接本地服务器

peer.Connect("127.0.0.1:5055", "MYGameServer")

}

private void Update()

{

//和服务器实时保持数据连接

peer.Service()

}

private void OnDestroy()

{

if (peer != null  peer.PeerState == PeerStateValue.Connected)

{

//断开连接

peer.Disconnect()

}

}

public void AddRequest(BaseRequest request)

{

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/zaji/8610334.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3