参照
Why I Don't Use DataSets in My ASP.NET Applications(by Scott Michell)
http://aspnet.4guysfromrolla.com/articles/050405-1.aspx
Performance Comparison: Data Access Techniques
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdadotnetarch031.asp
首先需要理解DataSet 和 DataReader的设计目标:
DataSet可以理解成一个小型的,存在于内存中的数据库,包含多个data table,table之间
可存在约束关系.
DataSet和数据库无关,由DataAdapter来负责对数据库的处理,一旦数据填充结束,就和数据库
断开连接.
DataSet对XML的支持比较好.
DataReader可以理解成程序和数据库之间的桥梁.只能顺序的,从数据库中读取记录.
DataReader是和数据库相关的,所以存在sql, ole等多个版本的DataReader.
从使用上来看,
使用DataReader需要以下步骤:
// 1. 建立连接
SqlConnection myConnection = new SqlConnection(conn);
// 2. 执行查询
SqlCommand myCommand = new SqlCommand(myConnection, sqlText);
SqlReader myReader = myCommand.ExecuteReader();
// 3. Read
while(myReader.Read())
{
}
// 4. Close connection
myConnection.Close();
使用DataSet需要以下步骤:
// 1. 建立连接
SqlConnection myConnection = new SqlConnection(conn);
// 2. 生成command 和 adapter
SqlCommand myCommand = new SqlCommand(myConnection, sqlText);
SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand);
// 3. 生成dataset并填充
DataSet myDataSet = new DataSet();
myAdapter.Fill(myDataSet);
// 4. Close connection
myConnection.Close();
如果使用UIControlo显示数据,对于dataset和datareader的操作是相同的:
把dataset或datareader赋给control的DataSource属性,
再调用control的DataBind()方法.
比较:
DataSet的性能比DataReader差很对,同时占用大量的内存.
何时使用DataSet:
1.数据传输.
2.桌面应用.
在ASP.Net 2.0中DataTable进行了以下的扩展和增强:
--dataTable可以独立于dataset而存在,
--dataTable可从datareader中读取数据:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Create a Command
using (SqlCommand command = new SqlCommand(Sql, connection))
{
// Call ExecuteReader to return a DataReader
using (SqlDataReader reader = command.ExecuteReader())
{
// Create a DataTable
DataTable table = new DataTable();
// Fill DataTable
table.Load(reader, LoadOption.OverwriteChanges);
// Display data in GridView
dataGridView1.DataSource = table;
}
}
}
--也可用Adapter填充
SqlDataAdapter adapter = new SqlDataAdapter(Sql, connection);
DataTable table = new DataTable("Employees");
adapter.Fill(table);
--用DataTableReaderCreate(it is disconnected)从datatable中读取数据:
DataTableReader dtReader = table.CreateDataReader();
while (dtReader.Read())
{
str = dtReader.GetValue(0).ToString();
}
如果
DataTableReader dtReader = dataset.CreateDataReader();
dtRader会读取DataSet中所有DataTable的数据.
--可以merge多个data table
dtTable1.Merge(dtTable2);
--Serialize的支持,从而可以在web method中传递DataTable
DataTable table = new DataTable();
table.Load(reader, LoadOption.OverwriteChanges);
// 设置序列化的格式,default为SerializationFormat.Xml
table.RemotingFormat = SerializationFormat.Binary;
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("Data.txt", FileMode.OpenOrCreate);
bf.Serialize(fs, table);
相关推荐
Python机器学习数据读取:多源异构数据统一加载方案
在机器学习工程中,数据读取(Data Ingestion)是模型训练前的关键预处理环节,其本质是将CSV、JSON、数据库、Parquet等异构格式的原始字节流,经IO解析、类型转换、模式校验后,可靠转化为结构化DataFrame或张量。该过程涉及编码处理、内存管理、流式解析与Schema一致性保障等底层机制,直接影响特征复现性与线上稳定性。尤其在生产环境中,面对TB级日志、嵌套JSONL、时区敏感时间戳及动态类型漂移等挑战,仅依赖pandas.read_csv极易引发ValueError、UnicodeD
DataTable.Load(reader)注意事项
这时执行完Load你会发现dt只有1行…解决办法就是不要使用Load,而是使用。
C#与SQL Server数据库操作实战:从连接管理到CRUD完整指南
数据库连接是应用程序与数据存储交互的基础通道,其核心原理是通过连接字符串建立网络通信链路,并利用连接池技术优化资源复用。在C#开发中,ADO.NET作为原生数据访问层,提供了对SQL Server的高性能操作支持,其技术价值在于平衡开发效率与执行控制力,既能通过参数化查询有效防范SQL注入攻击,又能通过异步编程提升系统响应能力。在企业级应用、桌面工具和Web后台等典型场景中,掌握原生的数据库操作是理解ORM框架底层机制、排查性能瓶颈的必备基础。本文以C#控制台应用为例,详细解析如何通过SqlConnecti
PyTorch 入门实战(三)——Dataset和DataLoader
目录 文章目录一、概念二、Dataset的创建和使用三、DataLoader的创建和使用四、将Dataset数据和标签放在GPU上(代码执行顺序出错则会有bug)五、Dataset和DataLoader总结 一、概念 torch.utils.data.dataset这样的抽象类可以用来创建数据集。学过面向对象的应该清楚,抽象类不能实例化,因此我们需要构造这个抽象类的子类来创建数据集,并且我们还...
Power BI Report Builder:专业分页报告设计与交付指南
分页报告是一种面向正式交付的结构化文档生成技术,其核心在于像素级排版控制、确定性分页逻辑与静态格式稳定性。不同于交互式BI仪表板,它基于纸张思维设计,依赖严格的数据集定义、页面级布局约束和表达式驱动的动态内容。该技术广泛应用于财务对账单、审计底稿、银行流水、销售汇总等需合规打印、批量分发与长期归档的业务场景。Power BI Report Builder 作为原生支持云端数据集与RLS权限的现代分页报告工具,填补了Power BI Desktop在正式交付环节的关键能力缺口,实现从数据建模到可审计文档的一站
Power BI分页报表:构建可打印、可归档、可审计的正式交付物
分页报表(Paginated Reports)是面向纸质交付与合规场景的专业文档生成技术,其核心原理基于服务端确定性渲染与固定布局(fixed-layout)机制,区别于交互式BI报表的浏览器动态渲染。它通过SQL数据集驱动、像素级格式控制和语义化分页逻辑,保障导出PDF的一致性与可重复性,满足财务月结、法务归档、监管报送等刚性需求。技术价值体现在跨平台打印零偏差、批量生成高稳定性及多语言/多环境无缝适配。典型应用场景包括合同附件、审计底稿、医疗器械检验报告等需长期存证的正式文件。本文聚焦Power BI
Dataset的用法简析
之前的文章,稍微讲了一下Estimator的用法,也提到Estimator的数据处理使用的是tf.data这两个模块是Tensorflow初学者必须掌握的内容。现在,就让我们从大的概念入手,来慢慢理解tf.data的用法 转载请注明出处 推荐官方文档:https://tensorflow.google.cn/programmers_guide/datasets tf.data的作...
从零构建Carsim线控转向仿真:模型搭建、算法集成与整车联动实战
本文详细介绍了从零开始基于Carsim和Simulink搭建线控转向仿真模型的完整实战流程。内容涵盖RWA前轮执行器动力学建模与PID控制、卡尔曼滤波器估算齿条力、HWA方向盘手感模拟算法设计,以及最终实现HWA与RWA闭环联动并进行整车仿真调试。通过分步拆解,帮助读者深入理解线控转向系统的核心原理与工程实现。
【DataSet】看完此篇文章完全理解Choerodon UI
从Choerodon UI的核心概念DataSet开始讲起,将核心概念拆解揉碎,非常适合初学者和有一定基础的前端学习者
BES (恒玄)HFP通话笔记
1.audio_developer 调试:SDK 需要打开某个算法,需要原厂打开对应宏定义编译出新的SDK,只要涉及到lib库里的功能都需要原厂手动修改编译。开发商和原厂FAE做起来都会比较累。如果没有原厂支持根本没法做,很少文档,SDK也很多问题,没法开箱即用如果要支持audio_developer上位机调试,还需改代码,如果对整个原理不清楚就没法做,没文档只能啃代码调试工具设计的也有待加强,串口通讯调试对耳机这类产品非常麻烦,本来板子就不大,还要焊接一堆线,调试还要拖着串口线。
CDO批量处理nc文件:5分钟搞定CMIP6数据双线性插值(附完整代码)
本文详细介绍了如何使用CDO工具链中的`remapbil`命令,快速实现CMIP6数据的批量双线性插值处理。通过环境配置、核心操作步骤、高级优化技巧及典型报错解决方案,帮助科研人员高效处理大规模nc文件,显著提升气象数据处理效率。
PyTorch|Dataset与DataLoader使用、构建自定义数据集
构建自定义的Dataset类,需要继承TensorFlow的官方dataset类自定义Dataset类必须实现三个函数:__init__,__len__和__getitem__pytorch中的dataset类是在pytorch的torch下的utils之下的data文件夹里有一个dataset.py。
EtherCAT简介
EtherCAT(EtherNet Control Automation Technology)是由德国公司BECKHOFF公司于2003年提出的实时工业以太网技术。其具有高速、高数据有效率的特点,支持多种设备的连接拓扑结构。从站节点使用专用的控制芯片,例如:microchip公司的Lan9252、BECKHOFF公司的ET1100等ESC(EtherCAT slave controller)芯片。主站的搭建方式有很多,例如:开源主站IGH、SOEM、商业化主站TwinCAT等。
DataSet DataTable DataReader dataAdapter区别 (转载)
DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,应用程序开始运行时,把数据库相关数据保存到DataSet. DataTable表示内存中数据的一个表.常和DefaultView使用获取可能包括筛选视图或游标位置的表的自定义视图。 DataReader对象是用来读取数据库的最简单方式,它只能读取,不能写入,并且是从头至尾往下读的,无法只读某条数据,但它占用
从零开始写一个RTSP服务器(一)RTSP协议讲解
从零开始写一个RTSP服务器系列 从零开始写一个RTSP服务器(一)不一样的RTSP协议讲解 从零开始写一个RTSP服务器(二)RTP传输H.264(待写) 从零开始写一个RTSP服务器(三)一个传输H.264的RTSP服务器(待写) 从零开始写一个RTSP服务器(四)RTP传输AAC(待写) 从零开始写一个RTSP服务器(五)一个传输AAC的RTSP服务器(待写) 从零开始写一个RTSP服务器(...
第一章 DRM 子系统概述:1.2 专栏定位与技术覆盖范围
本专栏系统解析Linux内核DRM图形子系统的核心技术,涵盖GEM对象管理、TTM内存机制、DRM-Fence同步等核心模块,深入剖析DMA-BUF共享、DMA_Resv资源管理等关键技术。通过解读内核源码与用户态接口(libdrm),结合进程管理、匿名inode等底层机制,构建完整的DRM知识体系。专栏兼顾深度与易懂性,辅以实际应用场景分析,既适合图形驱动开发新手入门,也可满足资深工程师进阶需求,帮助读者掌握从内核实现到应用开发的全栈知识。
DataSet,DataReader,DataTable区别
简单说就是: DataSet:数据集。一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable DataTable:数据表。 一: SqlDataAdapter da=new SqlDataAdapter(cmd); DataTable dt=new DataTable(); da
【WRF数据准备】气象驱动数据-ERA5再分析数据(Copernicus)
【WRF数据准备】气象驱动数据-ERA5再分析数据
dataset 用法
Dataset 并不是Recordset的简单翻版。从一定的意义上来说,DataView更类似于Recordset。如果说DataReader是访问数据的最容易的方式,那么Dataset则是最完整的数据访问对象。通过Dataset,你可以操作已有的数据,还可以通过程序创建Dataset,加入Table到Dataset,并建立这些Table之间的关系。 使用Dataset的...
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
DataSet及DataTable用法详解
DataSet是ADO.NET开发人员为方便数据处理开发出来的,是数据的集合,是为解决DataReader的缺陷设计的,DataReader数据处理速度快,但它是只读的, 而且一旦移到下一行,就不能查看上一行的数据,DataSet则可以自由移动指针。DataSet的数据是与数据库断开的。 DataSet还可用于多层应用程序中,如果应用程序运行在中间层的业务对象中来访问数据库,则业务对...
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
c# oracle 表格显示,C# 读取 Oracle 数据库表的例子
C# 读取 Oracle 数据库表的例子using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.OracleClient;namespace A0170_Oracle.Sample{/// /// 用于 读取 Oracl...
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
C# ADO.NET数据库编程完整学习笔记
ADO.NET是.NET 平台下核心的数据库访问技术,是程序和数据库之间的桥梁。本文完整梳理ADO.NET核心组件:连接对象SqlConnection、命令对象SqlCommand、数据读取器SqlDataReader、DataSet、SqlDataAdapter、事务,最后封装通用数据库工具类 DBHelper,适合 C# 后端入门学习。
C#将Excel数据表导入SQL数据库的两种方法
最近用写个winform程序想用excel文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用。 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。 using Syste...
Aspose.Words 核心功能解析与实战:从文档对象模型到批量处理优化
文档对象模型是处理结构化文档数据的核心概念,它通过树形节点结构(如段落、样式、表格)在内存中精确表示文档内容与格式。其原理在于将文档解析为可编程操作的节点集合,从而实现高保真、跨平台的文档处理能力。这一技术价值在于彻底摆脱了对桌面Office软件的依赖,支持在服务器端、容器化环境中高效执行批量文档生成、格式转换与内容自动化任务。在应用场景上,它广泛适用于合同报告模板填充、电子发票生成、多格式文档归档以及大规模个性化文档输出等企业级需求。本文聚焦于Aspose.Words这一商业库,深入剖析其基于文档对象模型
Python开发全攻略:从环境搭建到进阶应用
Python作为当今最流行的编程语言之一,以其简洁语法和强大生态著称。环境配置是Python开发的第一步,涉及解释器安装、PATH设置和虚拟环境管理。核心语法特性如动态类型、内置数据结构和面向对象编程,构成了Python开发的基础。在工程实践中,开发者需要掌握依赖管理、代码调试和性能优化等关键技能。Python在Web开发、数据分析、机器学习等领域都有广泛应用,相关框架如Django、Flask和FastAPI极大提升了开发效率。对于进阶开发者,异步编程、元编程和设计模式等高级特性能够解决复杂场景下的技术挑
392



被折叠的 条评论
为什么被折叠?



