当前位置: 首页 > 编程语言 > C#

C#中使用SqlDataReader填充List分享

时间:2023-04-10 18:02:38 C#

C#中使用SqlDataReader填充List我有一个类如下,classStudent{publicstringName{get;设置;}公共字符串姓氏{get;放;}publicintAge{get;设置;}公共字符串地址{get;set;}}我有一个包含50,000条记录的MySql表。表的结构如下,IDNAMESURNAMEAGEADDRESS1JoePhilip20Moscow2MishaJohny25London...我有一个C#代码,Liststudents=newList();stringsql="SELECTname,surname,age,addressFROMStudents";命令.CommandText=sql;MySqlDataReaderreader=command.ExecuteReader();while(reader.Read()){Studentst=newStudent();st.Name=reader["姓名"].ToString();st.Surname=reader["姓氏"].ToString();st.Age=Convert.ToInt32(reader["Age"].ToString());st.Address=reader["地址"].ToString();students.Add(st);但它的工作速度非常慢。你推荐什么方法来使这段代码运行得更快?更新:当我使用这段代码时,DataTabledt=newDataTable();适配器.填充(dt);它运行良好,速度非常正常。但是我想用我自己的班级解决的问题是什么?如果代码运行缓慢,最大的原因是有50,000条记录。50,000个学生对象究竟需要什么?如果您可以在不读取所有这些记录和创建所有这些对象的情况下找到解决问题的方法,那么您将拥有更快的代码。更新使用您自己的课程很好。大多数时候,当事情运行缓慢时,这是因为您的代码受I/O限制(您花费大部分时间等待I/O)。为避免所有I/O,您可以减少检索的数据量(可能通过消除数据中不相关的列或行)或通过更复杂的查询或存储过程来处理数据库。更新2为了回答您的后续问题(为什么创建对象列表比获取数据集慢),我希望将整个查询作为数据集读取只会比创建对象快一点。我不熟悉MySQL.NET库的实现方式。令我惊讶的是,这两种方法之间的速度会有很大差异。也许MySqlDataReader正在做一些愚蠢的事情,比如使用内部数据集。如果两者之间的性能差异很大,那么库的作者可能应该修复它。更新3MySqlDataAdapter或MySqlDataReader的批量传输答案是什么?有一个很好的提示;设置阅读器的BatchSize可能会有所帮助。如果批量大小对读者来说太小,使用像您这样的大量记录会降低其效率。使用recordindex而不是coulmname来提高性能。以上就是C#学习教程:C#中使用SqlDataReader填充List的全部内容分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——st.Name=reader[0].ToString();而不是st.Name=reader["Name"].ToString();和st.Name=reader[0].ToString();而不是st.Name=reader["surname"].ToString();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: