Unityを介してMS SQLデータベースに接続しようとしています。ただし、接続を開こうとすると、IOException:Connection lostが発生します。
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 lost
Mono.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)
このアプローチのセキュリティリスクは無視してください。テストのためにこれを行う必要があります。セキュリティは後で提供されます。お時間をいただきありがとうございます。
別の方法は、コマンドプロンプトで独自の専用サーバーを作成して通信を行い、それをUnityに接続してHandelマルチプレイヤーとSQL通信を行うことです。この方法で、1つの言語で作成されたすべてに固執することができます。しかし、かなり急な学習曲線です。
Unityはゲームエンジンです。
答えが言うとおりです。
ただし、一部のドメインはデータベースに直接接続する必要があります。
ゲームドメインでデータベースに直接アクセスしないでください。
とにかく、問題は英語以外のコンピューター名が原因です。
プロジェクトの前に次のようなエラーに直面しました。
IOException: Connection lost
Mono.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)
コンピュータ名を英語に変更した後、機能します。
私はそれがどうなるかわかりません。しかし、それは機能します。
MonoのSystem.Data.dllにはP.Cにいくつかの問題があり、コンピューター名が英語ではありません。
だから、少なくともUnityプロジェクト。
お客様に、コンピューター名を英語以外に設定しないでください。
モノの人がこれらの問題を知っているかどうかはわかりません。