【发布时间】:2014-07-09 01:52:57
【问题描述】:
我正在开发一个 Unity 应用程序,该应用程序需要访问数据库以提供有关一组游戏对象的信息。
目前,我为每个游戏对象附加了一个脚本,用于建立连接、查询数据库并填充一些公共变量,如下所示:
public class Fill : MonoBehaviour {
static string connectString =
"Server=blah;" +
"Database=blah.org,3500;" +
"User ID=blahman;" +
"Password=blah42;";
static SqlConnection cn = new SqlConnection(connectString);
public string PublicVar;
void Start () {
string sCommand = string.Concat("SELECT blah from blah.table where row =", transform.GameObject.name);
//FILL PUBLIC VARIABLE FOR _______
SqlDataAdapter da = new SqlDataAdapter(sCommand, cn);
cn.Open ();
DataTable dataTable = new DataTable();
int rec = da.Fill (dataTable);
foreach (DataRow row in dataTable.Rows) {
//Debug.Log ("--- Row --- ");
foreach (var item in row.ItemArray){
//Debug.Log ("Item ");
//Debug.Log (item);
PublicVar = item.ToString();
}
}
cn.Close();
}
}
我目前在开始运行场景时遇到了相当大的时间开销,显然是因为数据库正在连接并在“开始”方法中查询许多不同的游戏对象 (>20)。
我的问题是:这些开销从何而来?是在查询本身、连接还是数据适配器中?建立一个全局连接或单例并让所有脚本访问它会更好吗?我当前的模型似乎最直观,但我需要更好的性能。
谢谢
【问题讨论】: