Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该保持SqlConnection打开吗?_C#_Sql_Sql Server_Unity3d - Fatal编程技术网

C# 我应该保持SqlConnection打开吗?

C# 我应该保持SqlConnection打开吗?,c#,sql,sql-server,unity3d,C#,Sql,Sql Server,Unity3d,在我的Unity3D游戏中,玩家通过短关卡玩自己,开始时大约需要4秒。目标是在每个关卡中获得尽可能好的空闲时间。我目前正在本地保存这些清除时间,但我想将它们上载到SQL Server,以便能够为每个级别创建排行榜 由于执行SqlConnection.Open()命令大约需要1-2秒,有时也需要3秒,因此我想知道是否应该保持静态连接始终处于打开状态,随时准备执行我想要运行的任何查询 这样做有没有不必要的危险副作用 编辑:这是我用来打开SqlConnection的代码 SqlConnectionSt

在我的Unity3D游戏中,玩家通过短关卡玩自己,开始时大约需要4秒。目标是在每个关卡中获得尽可能好的空闲时间。我目前正在本地保存这些清除时间,但我想将它们上载到SQL Server,以便能够为每个级别创建排行榜

由于执行
SqlConnection.Open()
命令大约需要1-2秒,有时也需要3秒,因此我想知道是否应该保持
静态连接始终处于打开状态,随时准备执行我想要运行的任何查询

这样做有没有不必要的危险副作用

编辑:这是我用来打开SqlConnection的代码

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder()
{
    DataSource = dataServer,
    UserID = userId,
    Password = password
};

SqlConnection connection = new SqlConnection(builder.ToString());
connection.Open();

首先,我要回答这个问题:

这样做有没有不必要的危险副作用

假设您将此代码保留在游戏(客户端)中,并且SQL Server不是客户端,而是位于某个位置的服务器中,则简单的客户端反向工程将能够从连接字符串中获取您的凭据,并使用它们获得对数据库的未经授权访问。(切勿信任客户)

话虽如此,我建议您使用一种简单的服务器端技术(php、Socket应用程序、JavaServlet等)和SQL,客户端将信息发送到那里,然后发送到数据库

例如:

1) 客户端->发布数据->PHP

2) PHP->连接->SQL数据库

3) PHP->插入数据->SQL数据库

这样,您还可以通过请求php(或您正在使用的任何技术)将数据发送到客户端,从数据库检索梯形图的结果


祝您进步顺利,如有任何其他信息,请随时与我联系

首先我要回答这个问题:

这样做有没有不必要的危险副作用

假设您将此代码保留在游戏(客户端)中,并且SQL Server不是客户端,而是位于某个位置的服务器中,则简单的客户端反向工程将能够从连接字符串中获取您的凭据,并使用它们获得对数据库的未经授权访问。(切勿信任客户)

话虽如此,我建议您使用一种简单的服务器端技术(php、Socket应用程序、JavaServlet等)和SQL,客户端将信息发送到那里,然后发送到数据库

例如:

1) 客户端->发布数据->PHP

2) PHP->连接->SQL数据库

3) PHP->插入数据->SQL数据库

这样,您还可以通过请求php(或您正在使用的任何技术)将数据发送到客户端,从数据库检索梯形图的结果


祝您进步顺利,如有任何其他信息,请随时与我联系

为什么打开连接需要3秒钟?你确定吗?通常,您会根据需要创建和关闭连接,让连接池完成它的工作。@Amy我刚刚再次检查,时间不一致,现在是1到2秒,以前是3秒左右。我所做的就是用我的凭据创建一个新的
SqlConnection
实例,然后打开它。在这种情况下,请始终使用连接池,并相应地处理打开的连接。你很可能会在某个时刻扩展你的应用程序,那时候事情会变得很麻烦。还有,它是本地数据库吗?3秒有点过分。如果不是本地数据库,请尝试在其他设备上运行该应用程序,看看是否没有本地连接问题。@Amy好的,我现在就这样做。如果这样做会给用户体验带来太多麻烦,我会再次调查,谢谢你的帮助!如果速度很重要,也许你应该考虑在后台保存结果,同时允许玩家继续玩下一关。为什么打开连接需要3秒钟?你确定吗?通常,您会根据需要创建和关闭连接,让连接池完成它的工作。@Amy我刚刚再次检查,时间不一致,现在是1到2秒,以前是3秒左右。我所做的就是用我的凭据创建一个新的
SqlConnection
实例,然后打开它。在这种情况下,请始终使用连接池,并相应地处理打开的连接。你很可能会在某个时刻扩展你的应用程序,那时候事情会变得很麻烦。还有,它是本地数据库吗?3秒有点过分。如果不是本地数据库,请尝试在其他设备上运行该应用程序,看看是否没有本地连接问题。@Amy好的,我现在就这样做。如果这样做会给用户体验带来太多麻烦,我会再次调查,谢谢你的帮助!如果速度很重要,也许你应该考虑在后台保存结果,同时允许玩家继续玩下一关。谢谢你的详细解释!最后我用一个PHP脚本完成了它,效果非常好。谢谢你的详细解释!最后我用一个PHP脚本完成了这项工作,效果非常好。