更有效地从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();
}
}
}
}
这个方法的问题是它很慢,当用户选择多个项目文件或文化时,它不能成功创建表,在这种情况下,什么是更好的方式来显示数据?
失败的原因有2个(可能是3个):
-
不要使用实例成员作为SQL连接。用
包装所有代码using(SqlConnection conn = new SqlConnection(myConnectionString)
-
每次重建最内层循环内的
SqlCommand
-
它看起来像你重新绑定每个数据集从多个调用到相同的数据视图。我在这方面没有太多经验。我通常使用
reader["myField"]
和构造局部对象,所以这可能不是问题。