Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从sql server在c上显示大量数据的更有效方法?_C#_Sql_Sql Server - Fatal编程技术网

C# 从sql server在c上显示大量数据的更有效方法?

C# 从sql server在c上显示大量数据的更有效方法?,c#,sql,sql-server,C#,Sql,Sql Server,目前,这是我们从sql server显示数据表的方法,存储在服务器中的表有多个列,包括ProjectFile和Culture,我们只想显示具有用户指定的ProjectFile和Culture的数据: private void showData(string[] selectedProject, string[] selectedCulure) { //the sql procedure will select data of specific culture and proje

目前,这是我们从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();
                }
            }
        }
    }

此方法的问题是速度非常慢,并且当用户选择多个项目文件或区域性时无法成功创建表,在这种情况下,显示数据的更好方法是什么?

发生故障的原因可能有2个或3个:

不要将实例成员用作SQL连接。将所有代码包装在

using(SqlConnection conn = new SqlConnection(myConnectionString)
每次在最里面的循环中重新构造SqlCommand

看起来您正在从对同一dataview的多个调用中重新绑定每个数据集。我在这方面没有太多经验。我通常使用reader[myField]并构造本地对象,因此这可能不是问题


您需要做的第一件事是将sql连接打开/关闭移动到for循环之外。@gunr217,谢谢您的建议,我一定会尝试的。也许我的标题不清楚,但这不仅仅是为了改进代码,如果用户选择了多个区域性或项目文件,代码当前无法加载数据,我不知道问题出在哪里。@SSilicon,如果您的代码无法工作,而我不清楚,请不要转到代码审阅。但是你能告诉我们更多关于代码是如何不起作用的吗。你输入了什么,发生了什么?如果我想加载选择了多个区域性或projectfile的表,asp.net页面将不会响应代码,也不会发生任何事情。是的,它会在两个for循环中遍历项目和区域性的每个组合,选择绑定它的所有内容,然后只要有一些结果,把它们都扔掉,做下一个!项目和区域性元组(例如,您希望P1和C1联合P2和C2)还是希望P1 | P2 | C1 | C2?