【发布时间】:2011-03-26 23:21:23
【问题描述】:
使用 C#、Visual Studio 2008、SQL Server 2000(和 2008)
我在我的 Web 应用程序中使用 DataLayer 类进行 SQL 调用:
DataLayer 中包含应用程序的所有 SQL 调用,所有 SQL 活动都发生在该类中。
例如:
protected void UpdatePeople(int iPeopleID, string Lastname......)
{
InitCmd("sUpdatePeople");
c_objSQLCmd.Parameters.Add(new SqlParameter("@PeopleID", iPeopleID));
c_objSQLCmd.Parameters.Add(new SqlParameter("@LastName", szLastName));
CmdExecuteNonQuery();
}
然后,我有执行 SQL 工作的辅助对象:
private void InitCmdSP(string szStoredProc)
{
c_objSQLCmd.Parameters.Clear();
c_objSQLCmd.CommandType = CommandType.StoredProcedure;
c_objSQLCmd.CommandText = szStoredProc;
}
private int CmdExecuteNonQuery()
{
int iReturn = 0;
if (c_objSQLConn.State != ConnectionState.Open)
c_objSQLConn.Open();
iReturn = c_objSQLCmd.ExecuteNonQuery();
c_objSQLConn.Close();
return iReturn;
}
我还有返回 DataTable 或 DataSet 以及 ExecuteScalar 并根据需要返回 int、string 等的辅助对象。
我的问题是,每次打开/关闭 SQL 连接会对性能造成什么影响?
到目前为止,这些应用程序的用户通常少于 600-700 个,而且同时用户数量也不多,因此用户感知的性能可能不是真正的问题。我只是在尝试考虑最佳做法。
谢谢, 约翰
【问题讨论】:
-
另外,我会通过使用“Using 语句”-w3enterprises.com/articles/using.aspx 推出所有连接逻辑,以确保在发生任何异常时处理连接
标签: c# sql-server