2

我在一个名为 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();

        ...
    }
4

2 回答 2

0

也许在存档列上创建索引可能会有所帮助.. 但是您的代码看起来不错。但是,如果供应商列表继续增长,请考虑用分页数据网格替换您的组合的机会。

此外,在使用 DDBB 时始终使用 finally 块,并在那里释放 Commands 和 Connection 类以释放非托管资源。

于 2013-04-19T11:22:23.073 回答
0

我认为您的代码非常好...但是如果表中的数据太多,那么我认为组合框不是您的最佳选择..尝试其他替代方案...例如 GridView、ListView、Repeater ...而且总是有客户端。

当使用任何资源,如 SqlReader、File 等(所有使用 IDisposable 接口的类库类型)时,您应该使用“using”语句来处理资源的分配和处置......

单击此处了解有关使用语句的更多信息

于 2013-04-19T11:36:43.550 回答