SQL Server 与 Unity 的连接
Posted
技术标签:
【中文标题】SQL Server 与 Unity 的连接【英文标题】:SQL Server connection with Unity 【发布时间】:2019-11-30 11:08:43 【问题描述】:我正在尝试将我的 Unity 项目连接到 SQL Server。我已在 Visual Studio 2017 中成功连接了我的 Windows 窗体应用程序。而且我认为如果在统一脚本中复制确切的代码,我的目标应该会实现。我已将System.Data.Dll V3.5
导入我的资产并使用unity2018.2.1.f1
。我正在使用以下脚本尝试首先打开连接,但出现以下错误。
void Start ()
try
string ConnString = "Data Source=DESKTOP-PVB5MHG;Initial Catalog=UnityTest;User ID=legend;Password=legend";
SqlConnection MyConn = new SqlConnection(ConnString);
MyConn.Open();
Debug.Log("Connection opened !");
catch(System.Exception ex)
Debug.Log(ex.ToString());
System.Data.SqlClient.SqlException:服务器不存在或 拒绝连接。
Mono.Data.Tds.Protocol.TdsInternalException: 服务器不存在或连接被拒绝。
System.Net.Sockets.SocketException:使用了与请求的协议不兼容的地址。
在 System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP, Boolean requireSocketPolicy) [0x00000] in :0 在 System.Net.Sockets.Socket+Worker.Connect () [0x00000] in :0 --- 内部异常堆栈跟踪结束 --- 在 Mono.Data.Tds.Protocol.TdsComm..ctor (System.String 数据源,Int32 端口,Int32 packetSize,Int32 超时,TdsVersion tdsVersion) [0x00000] in :0 在 Mono.Data.Tds.Protocol.Tds..ctor (System.String 数据源,Int32 端口,Int32 packetSize,Int32 超时,TdsVersion tdsVersion) [0x00000] in :0 在 Mono.Data.Tds.Protocol.Tds70..ctor (System.String 服务器,Int32 端口, Int32 packetSize, Int32 timeout, TdsVersion version) [0x00000] in :0 在 Mono.Data.Tds.Protocol.Tds80..ctor (System.String server, Int32 port, Int32 packetSize, Int32 timeout) [0x00000] 在 :0 处 Mono.Data.Tds.Protocol.TdsConnectionPoolManager.CreateConnection (Mono.Data.Tds.Protocol.TdsConnectionInfo 信息)[0x00000] in :0 at Mono.Data.Tds.Protocol.TdsConnectionPool.GetConnection() [0x00000] in :0 在 System.Data.SqlClient.SqlConnection.Open () [0x00000] in :0 --- 内部异常堆栈结束 跟踪 --- 在 System.Data.SqlClient.SqlConnection.Open () [0x00000] 在 :0 在 DB.Start () [0x00010] 中 D:\UnityProjects2018\DataBaseTest1\Assets\DB.cs:15 UnityEngine.Debug:Log(Object) DB:Start()(在 Assets/DB.cs:20)
【问题讨论】:
连接到非嵌入式数据库通常不是您想在使用 Unity 制作的各种应用程序中直接执行的操作。通常,您将服务创建为“数据层”并对其进行 http 调用,而不是直接连接到数据库。 我相信集成安全仅适用于 Windows。尝试在 SQL Server 上创建一个用户并将其添加到您的连接字符串中。另外,您确定 SQL Server 正在机器上运行吗?不用更换本地主机吗? @tvdias first,感谢您的评论。我刚刚创建了一个用户并更改了连接字符串。再次在视觉工作室中运行良好,但在统一时出现同样的错误。我编辑了代码,你能再检查一下吗 虽然我们不确定这里的大局,但我强烈建议您不要将 SQL 连接数据直接嵌入到应用程序中,而让所有客户端直接连接到数据库。 【参考方案1】:由于 Mono 的限制,您不能在 Unity 中使用 ODBC。请改用http://github.com/dotnet/SqlClient。
您的具体错误与在 Mono 中解析机器名称的方式与 WinForms 时代的 .Net 框架的古老版本不同有关。 DESKTOP-PVB5MHG
将不是有效的 DNS 名称,而 Mono 仅使用 DNS 来解析 Data Source
。
【讨论】:
以上是关于SQL Server 与 Unity 的连接的主要内容,如果未能解决你的问题,请参考以下文章
unity3D Socket连接C#server出现unity3D编辑器再次启动连接 unity3D编辑器马上卡死
用C#语言实现与SQL server的连接并实现增删改查的功能
vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误