Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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# 从数据库中获取数据并存储到字典中_C#_Mysql_Asp.net_Dictionary - Fatal编程技术网

C# 从数据库中获取数据并存储到字典中

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

我试图从MySQL表中获取数据并将其存储到字典中。我知道我可以通过一个循环来做到这一点,但是DB表包含超过一百万个元组,这会减慢进度。有没有办法不用循环所有条目就可以做到这一点

DB表有两列,第一列(键)float type和第二列(值)varchar

我目前的做法是:

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。我想为每个循环提供报价