【问题标题】:How to connect Unity Android app with MS SQL server [duplicate]如何将 Unity Android 应用程序与 MS SQL 服务器连接 [重复]
【发布时间】:2018-11-27 17:06:34
【问题描述】:

我正在尝试从 Unity 构建一个 android 应用程序以连接 MS SQL 服务器数据库。我发现了一些适用于编辑器的方法,主要是基于从 Unity 直接连接到 SQL 服务器。但是,当我构建 android 应用程序时,这种方法不起作用。我只需要执行“选择”(登录)和“插入”(插入会话数据)。你们能提供一些关于最好的方法的建议吗?此外,我认为可能需要使用 Web 服务,但我没有找到很多使用 ASP.NET 作为中间 Web 服务器的示例。

【问题讨论】:

    标签: c# android sql-server unity3d


    【解决方案1】:
    With this kind of set-up you would generally call the the unity app the "client", because it's the part of the system which the end-user uses to view and interact with the world.
    

    您的客户通常不会直接访问数据库。这通常代表一个重大的安全问题。更典型的是,客户端会使用套接字连接与专用的多用户服务器应用程序通信(例如,SmartFox 服务器之类的东西,或者通常 - 对于 MMO 来说 - 自定义编写的服务器应用程序)。

    由于类似的安全原因,更简单的数据库交互(例如服务器端记分板)也是如此,您的客户端永远不会直接访问数据库。相反,您的客户端(游戏)会与专门编写的服务器端脚本(例如,PHP 或 ASP)对话,而这些脚本本身会访问数据库。

    因此,只有在您完全控制下的服务器端程序才有权直接访问数据库,而您的客户端(不太受信任,因为它们在您的用户手中!)仅限于提高通过您自己设计的 API 请求级别请求,在分数的情况下仅限于相关命令,例如“SubmitScore”和“RetrieveScoreboard”,或“MoveToLocation”、“TakeItem”、“Say Message”等多人角色扮演游戏。

    然后,这个多用户服务器将处理您世界中的交互,并负责与幕后的数据库进行交互,以创建、读取、更新和删除数据库中的信息,例如用户详细信息和持久性世界数据。

    因此,您的 Unity 客户端永远不需要知道诸如 SQL、表、记录等之类的东西的存在 :-) 这些东西都应该保留在您的服务器上,无论是作为服务器脚本还是在您的多用户服务器中申请。

    public void connect(){
    
    
             string connectionString =
                 "Server=servername;" +
                 "Database=dbname;" +
                 "User ID=userid;" +
                 "Password=pass;" +
                 "Integrated Security=True";
    
             result = new List<float> ();
             resultCas = new List<DateTime> ();
    
             using(SqlConnection conn = new SqlConnection(connectionString))
             {
                 SqlCommand c; SqlDataReader da; SqlParameter param1; SqlParameter param2; SqlParameter param3; SqlParameter param4;
                  conn.Open();
                 c = new SqlCommand();
                 c.Connection = conn;
                 c.CommandType = CommandType.StoredProcedure;
                 c.CommandText = "commandtext";
                 param1 = c.Parameters.Add("@identify",SqlDbType.Int);        
                 param1.Value = 1;
                 param2 = c.Parameters.Add("@startTime",SqlDbType.DateTime);
                 param2.Value = "2010-11-10 07:45:00.000";
                 param3 = c.Parameters.Add("@endTime",SqlDbType.DateTime);
                 param3.Value = "2010-11-12 10:15:00.000";
                 param4 = c.Parameters.Add("@args",SqlDbType.NVarChar);
                 param4.Value = "I";
                 da = c.ExecuteReader();
                 while (da.Read())
                 {
                     resultCas.Add(da.GetDateTime(0));
                     result.Add((float)da.GetDouble(1));
                 }
             }
         }
    

    【讨论】:

    • 我明白了。我需要简单的交互:用户使用其 ID 和密码登录;回答一个表格,该表格必须插入到数据库中。所以,你是说,就我而言(我认为是简单的交互),我应该处理服务器端脚本?
    • 关于您的脚本示例,它应该在统一端或 asp.net 上?我在统一方面做了类似的登录(只是一个选择功能),但在 android 上不起作用。
    • 您不会像这样从您的应用程序连接到 MySQL。请注意数据库登录详细信息如何在应用程序中公开。不要这样做!
    • @Programmer 我明白了。但是您建议使用什么方法甚至技术来帮助我研究它?如前所述,我正在考虑 asp.net 或 php。数据库已经设置好了,我只需要选择和插入操作。
    • asp.net 或 php,这是您的决定。您决定使用什么。只要 MySQL 代码没有像这个答案那样在 Unity 上运行,那很好。查看 php 和 asp.net,然后查看哪个更容易。使用那个。
    猜你喜欢
    • 2020-04-13
    • 2017-04-18
    • 2022-01-03
    • 2015-05-11
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    相关资源
    最近更新 更多