我这里有一个名为PurchaseOrder的类中的方法。在这里,我使用List<string>
检索供应商列表并在组合框中填充这些列表。代码实际上有效,但随着我在SQL Server数据库中添加越来越多的供应商,我在加载的表单上遇到了一些减速。我怎样才能优化这样的速度?
下面是两组代码,来自PurchaseOrderClass.cs的方法PopulateSuppliers()和一个Form_Load事件。
public object PopulateSuppliers()
{
//Create an instance of a List of Strings.
List<string> ListOfSuppliers = new List<string>();
string sqlString = "SELECT CompanyName FROM tbl_suppliers WHERE Archived = 'False';";
SqlConnection sqlConnection = new SqlConnection(connectionString);
SqlCommand sqlCommand = new SqlCommand(sqlString, sqlConnection);
sqlConnection.Open();
sqlReader = sqlCommand.ExecuteReader();
while (sqlReader.Read())
{
ListOfSuppliers.Add(sqlReader["CompanyName"].ToString());
}
sqlReader.Close();
sqlConnection.Close();
return ListOfSuppliers;
}
private void frmPurchaseOrderEditor_Load(object sender, EventArgs e)
{
...
//Populate a list of suppliers.
cboSuppliers.DataSource = PurchaseOrder.PopulateSuppliers();
...
}
答案 0 :(得分:0)
也许在Archived列上创建索引可能有所帮助..但是你的代码看起来很好。 但是,如果供应商列表将继续增长,请考虑使用分页数据网格替换组合的可能性。
此外,在使用DDBB时总是使用finally块,并在那里部署Commands和Connection类以释放非托管资源。
答案 1 :(得分:0)
我认为你的代码非常好......但是如果表中的数据太多,那么我认为组合框不是你的最佳选择......其他替代方案......比如GridView, ListView,Repeater ......总是有客户端。
当使用任何资源,如SqlReader,File等(所有使用IDisposable接口的类库类型)时,你应该使用“using”语句,它将负责分配以及处理资源...
点击here了解有关使用声明
的更多信息