C# 从数据库中获取数据并存储到字典中
我试图从MySQL表中获取数据并将其存储到字典中。我知道我可以通过一个循环来做到这一点,但是DB表包含超过一百万个元组,这会减慢进度。有没有办法不用循环所有条目就可以做到这一点 DB表有两列,第一列(键)float type和第二列(值)varchar 我目前的做法是:C# 从数据库中获取数据并存储到字典中,c#,mysql,asp.net,dictionary,C#,Mysql,Asp.net,Dictionary,我试图从MySQL表中获取数据并将其存储到字典中。我知道我可以通过一个循环来做到这一点,但是DB表包含超过一百万个元组,这会减慢进度。有没有办法不用循环所有条目就可以做到这一点 DB表有两列,第一列(键)float type和第二列(值)varchar 我目前的做法是: public static Dictionary<Single, string> GetData() { Dictionary<Single, string> dic= new Dictionary
public static Dictionary<Single, string> GetData()
{
Dictionary<Single, string> dic= new Dictionary<Single, string>();
string query = "select * from table;";
if (OpenConnection() == true)
{
try
{
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
//Something to store DB columns into dictionary without having to loop.
}
reader.Close();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
return dic;
}
公共静态字典GetData()
{
Dictionary dic=新字典();
string query=“从表中选择*”;
if(OpenConnection()==true)
{
尝试
{
MySqlCommand cmd=新的MySqlCommand(查询、连接);
MySqlDataReader=cmd.ExecuteReader();
if(reader.Read())
{
//将DB列存储到字典中而不必循环的东西。
}
reader.Close();
}
捕获(例外e)
{
控制台写入线(e.Message);
}
}
返回dic;
}
下一步是您想要的:
try
{
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataAdapter msda = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
msda.Fill(ds);
your_control.DataSource = ds;
your_control.DataBind();
//your control means some repeater, or gridview, or anything else, which may show all your elements together.
}
<>但是你也应该考虑,如果你有数百万的记录,最好让它们部分地被选择。例如,每页100条记录,使用行号或类似方法,下一步就是您想要的:
try
{
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataAdapter msda = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
msda.Fill(ds);
your_control.DataSource = ds;
your_control.DataBind();
//your control means some repeater, or gridview, or anything else, which may show all your elements together.
}
<>但是你也应该考虑,如果你有数百万的记录,最好让它们部分地被选择。例如,每页100条记录,使用行数或类似方法为什么有一条规则,而不必循环?使用循环有什么不对?基本思想是在不同于主线程的线程上执行长进程,以避免挂起GUI。你可以显示一个进度条或另一种等待消息。实际上,这只是更大问题的一小部分,我不能在上面花费太多时间。循环将使我的工具的整体性能非常慢。首先,你的表只有两列吗?只选择您需要的内容和您需要的部分数据,而不是整个百万数据。为什么您有一个完全不需要循环的规则?使用循环有什么不对?基本思想是在不同于主线程的线程上执行长进程,以避免挂起GUI。你可以显示一个进度条或另一种等待消息。实际上,这只是更大问题的一小部分,我不能在上面花费太多时间。循环将使我的工具的整体性能非常慢。首先,你的表只有两列吗?只选择您需要的内容和部分数据,而不是整个百万。我可以将数据集中的数据提取到字典中吗?@AbdulRehman您必须使用loop。我想提供foreach loop我可以将数据集中的数据提取到字典中吗?@AbdulRehman您必须使用loop。我想为每个循环提供报价