UnityでSQL Serverに接続する際、躓いた点をメモします。
※.NET Frameworkを使用する方法なのでWindows環境のみでの動作となり、マルチプラットフォームを考えられている方は不向きだと思います。
ソースコード
接続に以下のような記述を用いました。
ヘッダ部分
using System.Data.SqlClient;
using System.Data;
SQL接続部分
DataTable dt = new DataTable();
try
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "IP";
builder.UserID = "User";
builder.Password = "Password";
builder.InitialCatalog = "Table";
using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
{
connection.Open();
using (var sqlCommand = connection.CreateCommand())
{
sqlCommand.CommandTimeout = 60000;
//SQLを記述
sqlCommand.CommandText = "";
var adapter = new SqlDataAdapter(sqlCommand);
adapter.Fill(dt);
}
}
}
catch (SqlException e)
{
Debug.Log(e.ToString());
}
しかし、このままではエラーが出ます。どうやらSystem.DataのSqlClientが認識できていないようです。調べてみると、Unityで.NET Frameworkの機能を利用するためには特別な設定をしてやる必要があるようです。
error CS0234: The type or namespace name 'SqlClient' does not exist in the namespace 'System.Data'
設定内容
①BuildSettingを開き、左下のPlayer Seggingsをクリックします。
②Playerの下部にあるConfigurationのApi Compatibility Levelを.NET Frameworkに変更します。(デフォルトで.NET Standard 2.1になっています。)
③Unity Editorを再起動します。
これでエラーが消え、.NET Frameworkの機能を利用できるようになります。
最後に
Unityに互換性を選択できる項目があるのを初めて知りました。.NET FrameworkはWindows上のみでの動作なので、マルチプラットフォームのためにデフォルトはStandardになっているんでしょうか。このあたりの認識がかなり甘いので、どなたかツッコミいただければ嬉しいです。