萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Unity3D 連接 SQL Server 資料庫完整指南(含發布避坑)

Unity 專案直連 SQL Server 需引入 ADO.NET 組件,且發布為 WebGL/Standalone 時須處理原生 DLL 相依性。本文提供最小可行步驟與完整程式碼範例。

前置準備:必要組件

  1. System.Data.dll:C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity\
  2. 複製到專案 Assets/Plugins/ 目錄。
  3. 發布額外需求: 同目錄下另需三個國際化 DLL:
    • I18N.dll
    • I18N.West.dll
    • I18N.CJK.dll
    否則發布後連線失敗(TypeLoadException)。

連線程式碼範例

using System.Data;
using System.Data.SqlClient;
using UnityEngine;

public class ConnectionSqlServer : MonoBehaviour
{
    void Start()
    {
        // 連線字串:Data Source=主機;Initial Catalog=資料庫;User ID=帳號;Password=密碼;
        string connStr = "Data Source=.;Initial Catalog=Exam;User ID=sa;Password=123;";

        using (var conn = new SqlConnection(connStr))
        using (var cmd = conn.CreateCommand())
        {
            cmd.CommandText = "SELECT TOP 1 name FROM Users";
            cmd.CommandType = CommandType.Text;

            try
            {
                conn.Open();
                object result = cmd.ExecuteScalar();
                Debug.Log($"資料庫連線成功!首筆使用者:{result}");
            }
            catch (Exception ex)
            {
                Debug.LogError($"連線失敗:{ex.Message}");
            }
        }
    }
}

關鍵最佳實踐

項目建議
連線字串儲存勿硬編碼,使用 PlayerPrefs、ScriptableObject 或加密設定檔
連線管理使用 using 確保釋放;長連線考慮連線池(Pooling=true)
非同步查詢主執行緒勿同步查詢,改用 async/await 或 ThreadPool 避免卡頓
SQL 注入防護全程使用參數化 cmd.Parameters.AddWithValue("@p", val)
WebGL 限制瀏覽器沙箱禁止 TCP 直連,**必須改走 WebAPI/REST**;本方案僅適用 Standalone/行動裝置

常見錯誤排查

  • FileNotFoundException: System.Data.dll → 未放入 Assets/Plugins 或路徑錯誤。
  • TypeLoadException: I18N... → 發布缺少三個 I18N DLL。
  • SqlException: Login failed → 檢查 SQL Server 混合驗證模式、防火牆 1433 埠、帳號鎖定。
  • PlatformNotSupportedException → WebGL/IL2CPP 不支援 System.Data.SqlClient,需改用 Microsoft.Data.SqlClient + 原生外掛或改架構。

架構建議

客戶端直連資料庫不適合公開發布專案(暴露連線字串、繞過業務邏輯、難以擴展)。生產專案建議:

  1. Unity 呼叫自有 REST/gRPC API。
  2. API 層處理驗證、授權、業務邏輯、資料庫存取。
  3. 資料庫僅對 API 伺服器開放內網存取。

本文方案適用於內部工具、原型驗證、單機離線遊戲等受控環境。

copyright © 萬盛學電腦網 all rights reserved