猿问

如何从Unity连接到数据库

如何从Unity连接到数据库

我试图通过Unity连接到MS SQL数据库。但是,当我尝试打开连接时,我收到IOException:连接丢失。

我从Unity \ Editor \ Data \ Mono \ lib \ mono \ 2.0导入了System.Data.dll。我使用以下代码:

 using UnityEngine;
 using System.Collections;
 using System.Data.Sql;
 using System.Data.SqlClient;

 public class SQL_Controller : MonoBehaviour {

     string conString = "Server=myaddress.com,port;" +
             "Database=databasename;" +
             "User ID=username;" +
             "Password=password;";

     public string GetStringFromSQL()
     {
         LoadConfig();
         string result = "";

         SqlConnection connection = new SqlConnection(conString);
         connection.Open();
         Debug.Log(connection.State);
         SqlCommand Command = connection.CreateCommand();
         Command.CommandText = "select * from Artykuly2";
         SqlDataReader ThisReader = Command.ExecuteReader();
         while (ThisReader.Read())
         {
             result = ThisReader.GetString(0);
         }
         ThisReader.Close();
         connection.Close();

         return result;
     }
 }

这是我得到的错误:

IOException: Connection lostMono.Data.Tds.Protocol.TdsComm.GetPhysicalPacketHeader ()Mono.Data.Tds.Protocol.TdsComm.GetPhysicalPacket ()Mono.Data.Tds.Protocol.TdsComm.GetByte ()Mono.Data.Tds.Protocol.Tds.ProcessSubPacket ()Mono.Data.Tds.Protocol.Tds.NextResult ()Mono.Data.Tds.Protocol.Tds.SkipToEnd ()Rethrow as TdsInternalException: Server closed the connection.Mono.Data.Tds.Protocol.Tds.SkipToEnd ()Mono.Data.Tds.Protocol.Tds70.Connect (Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters)Mono.Data.Tds.Protocol.Tds80.Connect (Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters)

请用这种方法忽略任何安全风险,我需要这样做进行测试,安全性会在以后发生。感谢您的时间。


Smart猫小萌
浏览 1146回答 3
3回答

蝴蝶刀刀

另一种方法是在命令提示符下创建自己的专用服务器,以进行通信并将其连接到统一到Handel多人游戏和SQL通信。通过这种方式,您可以坚持使用一种语言创建。但是学习曲线相当陡峭。

吃鸡游戏

Unity是游戏引擎。所以答案是正确的。但是,有些域需要直接连接数据库。您不应该直接在游戏域中访问该数据库。无论如何,问题是由非英语计算机名称引起的。我在项目之前遇到了一些跟踪错误。IOException: Connection lostMono.Data.Tds.Protocol.TdsComm.GetPhysicalPacketHeader ()Mono.Data.Tds.Protocol.TdsComm.GetPhysicalPacket ()Mono.Data.Tds.Protocol.TdsComm.GetByte ()Mono.Data.Tds.Protocol.Tds.ProcessSubPacket ()Mono.Data.Tds.Protocol.Tds.NextResult ()Mono.Data.Tds.Protocol.Tds.SkipToEnd ()Rethrow as TdsInternalException: Server closed the connection.Mono.Data.Tds.Protocol.Tds.SkipToEnd ()Mono.Data.Tds.Protocol.Tds70.Connect (Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters)Mono.Data.Tds.Protocol.Tds80.Connect (Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters)将计算机名称更改为ENGLISH后,它可以正常工作。我不知道它会怎么样。但它的确有效。Mono的System.Data.dll在PC上有一些问题有NON-ENGLISH计算机名。所以,至少Unity项目。您应该告诉您的客户不要将他们的计算机名称设置为非英语。我不知道单声道的人是否知道这些问题。
随时随地看视频慕课网APP
我要回答