更有效地从sql server上用c#显示大量数据

本文关键字:显示 数据 上用 有效地 sql server | 更新日期: 2023-09-27 18:11:15

目前这是我们从sql server显示数据表的方法,存储在服务器中的表有几个列,包括ProjectFile和Culture,我们只想显示用户指定的ProjectFile和Culture的数据:

private void showData(string[] selectedProject, string[] selectedCulure)
 {
        //the sql procedure will select data of specific culture and projectfile from table,it has two parameters:@culture and @projectfile
        SqlCommand com = new SqlCommand("PROCEDURE_GETData", m_conn);
        com.CommandType = CommandType.StoredProcedure;
        for (int i = 0; i < selectedProject.Length; i++)
        {
            com.Parameters.Add("@ProjectFile", SqlDbType.NVarChar).Value =   selectedProject[i];
            for (int m = 0; m < selectedCulure.Length; m++)
            {
                com.Parameters.Add("@Culture", SqlDbType.NVarChar).Value = selectedCulure[m];
                try
                {
                    m_conn.Open();
                    dataView.DataSource = com.ExecuteReader();
                    dataView.DataBind();
                    if (dataView.Rows.Count == 0)
                    {
                        dataView.EmptyDataText = "No data found, please select another project or culture. ";
                        dataView.DataBind();
                    }
                }
                catch (Exception ex)
                {
                    Response.Write("Error Occur: " + ex.ToString());
                }
                finally
                {
                    m_conn.Close();
                    m_conn.Dispose();
                }
            }
        }
    }

这个方法的问题是它很慢,当用户选择多个项目文件或文化时,它不能成功创建表,在这种情况下,什么是更好的方式来显示数据?

更有效地从sql server上用c#显示大量数据

失败的原因有2个(可能是3个):

  1. 不要使用实例成员作为SQL连接。用

    包装所有代码
    using(SqlConnection conn = new SqlConnection(myConnectionString)
    
  2. 每次重建最内层循环内的SqlCommand

  3. 它看起来像你重新绑定每个数据集从多个调用到相同的数据视图。我在这方面没有太多经验。我通常使用reader["myField"]和构造局部对象,所以这可能不是问题。