Unity 5.3.5f和SQL Server 2008 R2:';现有的连接被远程主机强制关闭;

本文关键字:程主机 连接 主机 SQL 5f Server 2008 Unity R2 | 更新日期: 2023-09-27 17:58:00

我还没有在统一答案论坛上收到这篇文章的任何反馈,所以我在这里发帖是为了扩大知名度。

这个问题似乎在团结论坛上被问过几次,但都没有得到解决我问题的答案。我运行的是unity 5.3.5f,SQL Server 2008 R2 Express(运行的是SQL Server 2016,但读到mono dll只兼容SQL Server 2008)。我在我的资产文件夹中有正确的mono-dll,在我的项目中正确引用和构建。我正在本地运行数据库。我可以使用SQL Server Management Studio很好地了解它,Visual Studio 2015也可以很好地连接到它。我已经完全放弃了防火墙。现在我只是想让它在团结方面发挥作用。我还验证了SQL Server Management Studio中允许传入连接,并且SQL Server Configuration Manager中启用了tcp/ip。

此外,在检查unity手册时,据我所见,还没有关于数据库连接的文档。

我的代码:

public string RetrieveTestData(string query) { string sqlConnectionString = "Server=zzzz''SQLEXPRESS2008;" + "Database=mydb;" + "User ID=sa;" + "Password=mypass;";
Debug.Log(sqlConnectionString);
SqlConnection con = new SqlConnection(sqlConnectionString);
try
{
    con.Open(); // error thrown here
    SqlCommand cmd = new SqlCommand(query, con);
    var fubar = cmd.ExecuteScalar();
    con.Close();
    return fubar.ToString();
}
catch (Exception ex)
{
    Debug.Log(ex.StackTrace);
    throw;
}
public void TestQuery()
{
     Debug.Log(RetrieveTestData("select top 1 * from dbo.Weapon"));
}

我的错误:

SocketException:远程主机强制关闭了现有连接。

堆栈跟踪:

在System.Net.Sockets.Socket.ReceiveFrom_nochecks_exc(System.Byte[]buf,Int32偏移量,Int32大小,SocketFlags标志,System.Net.EndPoint&remote_end,布尔throwOnError,System.Int32&error)[0x0000]位于:0处的System.Net.SSocket.Socket.Receive From_nochocks(System.Byte[]buf,Int32偏移量System.Net.Sockets.Socket.ReceiveFrom(System.Byte[]缓冲区,System.Net.EndPoint&remoteEP)[0x0000]在:0处的System.Net.Sackets.UdpClient.Receive(System.Net.IEndPoint&remoteEP)[000x00000]在0处的System.Data.SqlClient.SqlConnection+SqlMonitorSocket.DiscoverTcpPortViaSqlMonitor(System.String ServerName,System.String InstanceName)[0x0000]在:0处的System.Data.SqlClient.SqlConnection.ParseDataSource(System.StringTheDataSource,System.Int32&端口,System.String&ServerNameC:''Development''Unity''twistedshadowsgame''TwistedShadows''Assets''Scripts''Data''DBBase.cs:23 UnityEngine.Debug:记录(对象)Assets.Scripts.Data''DBBase:RetrieveTestData(位于Assets/Scripts/Data/DBBase.cs:48)

非常感谢所有的帮助,因为这是阻碍我所有进步的唯一项目。如果我还没有发布什么,或者我需要在其他地方发布,请告诉我。我宁愿不为这件事安排单独的休息服务。我相信团结是有能力的,从我读到的内容来看,许多其他人都成功地做到了这一点。

提前感谢!ryan

Unity 5.3.5f和SQL Server 2008 R2:';现有的连接被远程主机强制关闭;

关于这个问题,我很"迟到了",但我不久前就找到了答案。正确的设计模式是编写一个将进行数据库调用的服务,并让unity对该服务进行调用。对于其他试图从数据库中提取数据以统一填充某个对象的人来说,这是首选模式。

谢谢:)