2016-07-21 22 views
1

この投稿からの一貫性のある回答フォーラムでのフィードバックはまだありませんので、ここに投稿して公開しています。Unity 5.3.5fとSQL Server 2008 R2: '既存の接続はリモートホストによって強制的に閉じられました'

ユニティフォーラムで数回質問されていますが、問題を解決した回答はありません。私はunity 5.3.5f、SQL Server 2008 R2 Express(SQL Server 2016を実行していましたが、モノラルdllはSQL Server 2008までしか互換性がないと読んでいます)を実行しています。私は適切に参照され、自分のプロジェクトで構築された私の資産フォルダに正しいモノdllを持っています。私はデータベースをローカルで実行しています。 SQL Server Management Studioを使用してうまくいけば、Visual Studio 2015も正常に接続します。私は完全にファイアウォールを落としました。今、私は単体IDEの中で動作させようとしています。また、SQL Server Management Studioで受信接続が許可されていること、およびSQL Server構成マネージャでtcp/ipが有効になっていることも確認しました。

また、単一性のマニュアルを調べることで、私が見た限り、データベース接続に関するドキュメントは存在しません。

マイコード:

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: An existing connection was forcibly closed by the remote host.

Stack trace:

at System.Net.Sockets.Socket.ReceiveFrom_nochecks_exc (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags, System.Net.EndPoint& remote_end, Boolean throwOnError, System.Int32& error) [0x00000] in :0 at System.Net.Sockets.Socket.ReceiveFrom_nochecks (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags, System.Net.EndPoint& remote_end) [0x00000] in :0 at System.Net.Sockets.Socket.ReceiveFrom (System.Byte[] buffer, System.Net.EndPoint& remoteEP) [0x00000] in :0 at System.Net.Sockets.UdpClient.Receive (System.Net.IPEndPoint& remoteEP) [0x00000] in :0 at System.Data.SqlClient.SqlConnection+SqlMonitorSocket.DiscoverTcpPort (Int32 timeoutSeconds) [0x00000] in :0 at System.Data.SqlClient.SqlConnection.DiscoverTcpPortViaSqlMonitor (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 query) [0x00013] in C:\Development\Unity\twistedshadowsgame\TwistedShadows\Assets\Scripts\Data\DBBase.cs:23 UnityEngine.Debug:Log(Object) Assets.Scripts.Data.DBBase:RetrieveTestData(String) (at Assets/Scripts/Data/DBBase.cs:35) Assets.Scripts.Data.DBBase:TestQuery() (at Assets/Scripts/Data/DBBase.cs:43) Assets.Scripts.Data.DBBase:Start() (at Assets/Scripts/Data/DBBase.cs:48)

これはすべて私の進捗状況を保持する単一のアイテムであるように、すべてのヘルプは大歓迎です。私が何かを投稿していないか、他の場所に投稿する必要がある場合は、私に知らせてください。むしろ別の休憩サービスを受ける必要はありません。私は統一性には能力があると確信しています。そして、私がそれを読んだところから、多くの人が成功したように見えます。

ありがとうございます! ryan

答えて

0

かなり "このゲームに遅れています"しかし、私はしばらく前にその答えを見つけました。適切な設計パターンは、データベース呼び出しを行い、単一性を持ってそのサービスを呼び出すサービスを書くためのものです。 dbからデータを取り込み、オブジェクトを1つにまとめるためには、これが望ましいパターンです。

ありがとう:)

関連する問題