C# Unity 5.3.5f和SQL Server 2008 R2:&x27;远程主机';
我还没有从unity answer论坛的这篇文章中收到任何反馈,所以我在这里发帖是为了扩大知名度 这个问题似乎在unity论坛中被问了好几次,但没有解决我的问题的答案。我运行的是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也可以很好地连接到它。我完全放弃了防火墙。现在我只是想让它在unity ide中工作。我还验证了SQLServerManagementStudio中是否允许传入连接,以及SQLServerConfiguration Manager中是否启用了tcp/ip 此外,在查看unity手册时,据我所知,没有数据库连接的文档 我的代码:C# Unity 5.3.5f和SQL Server 2008 R2:&x27;远程主机';,c#,sockets,sql-server-2008-r2,unity5.3,C#,Sockets,Sql Server 2008 R2,Unity5.3,我还没有从unity answer论坛的这篇文章中收到任何反馈,所以我在这里发帖是为了扩大知名度 这个问题似乎在unity论坛中被问了好几次,但没有解决我的问题的答案。我运行的是unity 5.3.5f,SQL Server 2008 R2 Express(运行的是SQL Server 2016,但了解到mono dll仅兼容SQL Server 2008)。我的资产文件夹中有正确的mono dll,并在项目中正确引用和构建。我正在本地运行数据库。我可以使用SQL Server Manageme
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、Boolean throwOnError、System.Int32和error)[0x00000 in:0 at System.Net.Sockets.Socket.ReceiveFrom_nochecks(System.Byte[]buf、Int32偏移量、Int32大小、SocketFlags标志、System.Net.EndPoint和remote_end)[0x00000]in:0在System.Net.Sockets.Socket.ReceiveFrom(System.Byte[]缓冲区、System.Net.EndPoint和remoteEP)[0x00000 in:0在System.Net.Sockets.UdpClient.Receive(System.Net.IPEndPoint和remoteEP)[0x00000]in:0 at System.Data.SqlClient.SqlConnection+SqlMonitorSocket.DiscovertCPort(Int32 timeoutSeconds)[0x00000]in:0 at System.Data.SqlClient.SqlConnection.DiscovertCPortViaSqlMonitor(System.String ServerName,System.String InstanceName)[0x00000 in:0 at System.Data.SqlClient.SqlConnection.ParseDataSource(System.String theDataSource,System.Int32&thePort,System.String&theServerName)[0x00000]in:0 at System.Data.SqlClient.SqlConnection.Open()[0x00000]in:0 at(wrapper remoting invoke with check)System.Data.SqlClient.SqlConnection:Open()at Assets.Scripts.Data.DBBase.RetrieveTestData(System.String查询)[0x00013]在C:\Development\Unity\twistedshadowsgame\TwistedShadows\Assets\Scripts\Data\DBBase.cs:23 UnityEngine.Debug:Log(Object)Assets.Scripts.Data.DBBase:RetrieveTestData(String)(位于Assets/Scripts/Data/DBBase.cs:35)Assets.Scripts.Data.DBBase:TestQuery()(位于Assets/Scripts/Data/DBBase.cs:43)Assets.Scripts.Data.DBBase:Start()(位于Assets/Scripts/Data/DBBase.cs:48)
非常感谢所有帮助,因为这是阻碍我所有进展的单一项目。如果我没有发布任何东西或我需要在其他地方发布,请让我知道。我不希望为此需要单独的rest服务。我相信unity有能力,从我所读到的信息来看,它似乎已经被许多其他人成功完成了毫无疑问
提前谢谢!ryan“比赛迟到了”在这一点上,但我在不久前找到了答案。正确的设计模式是编写一个将进行数据库调用的服务,并让unity对该服务进行调用。对于任何试图从数据库中提取数据以填充unity中某个对象的人来说,这是首选模式
谢谢:)关于这一点,我说得“太晚了”,但我不久前找到了答案。正确的设计模式是编写一个服务来调用数据库,并让unity调用该服务。对于任何试图从数据库中提取数据以填充unity中的某个对象的人来说,这是首选模式
谢谢:)