wxpython dataviewmodel_[转载]DataSet在三层结构中的功能以及DataView的使用

本文介绍了DataSet在三层结构中的功能,详细阐述了三层结构的依赖关系,以及ADO.NET的数据操作。重点讲解了DataSet、DataTable和DataView之间的关系,强调了它们在数据存储和数据视图呈现上的作用。此外,还探讨了自定义DataSet的方法以及DataView如何为不同用户展示数据,最后提及业务逻辑处理的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回顾知识点:

1.三层结构访问层的功能: 直接和数据库进行数据交互,包括增删改查的基本操作。

2.三层结构各层的依赖关系:

表示层依赖于业务逻辑层(BLL),业务逻辑层(BLL)依赖于数据访问层(DAL)。并且这三个层都依赖于数据模型层(Model)。

实体层充当的是一个数据载体,把数据封装成对象,由对象从访问层传递给业务逻辑层,再从业务层传给表示层。

业务逻辑层的作用是做业务处理。关于项目的特殊业务,可以放到业务逻辑层进行处理。将原始数据封装成业务对象。

访问层一般不作过多的业务处理,只负责对数据库的维护,进行增删改查的操作。

3.ADO.NET可以调用带参的SQL命令

4.DataSet,DataTable,DataView三者之间的关系:

DataSet中存在Tables集合,Tables集合中装的就是DataTable对象,DataView是数据视图,直接隶属于表,DataTable能够产生视图。

视图是针对于“列”来说的。可以从表中挑选出几列,组成一个视图。也可以由多张表,挑选出几个列组成视图。

他们三者的关系类似于:数据库,数据表,数据视图

DataSet在三层结构中的作用:

DataSet(数据集),它是数据在内存当中的一种存储形式。把数据库中的数据拿出来,先存到内存中,把二维表的形式拿过来,并且保持原有数据表的格式,需要一个“容器”,这种容器就是DataSet。DataSet还可以表现出数据之间的关系。

DataSet与实体都能完成相同的功能:

1.都充当数据的载体 2.能够做映射

载体-----容器:

把数据库中的数据拿过来,放入内存中,内存中的载体就是DataSet或实体。

映射关系:

实体的映射:是靠实体对象进行映射。根据数据表,构建相应的实体类。在实体类中的属性创建,依据是表中的字段。把数据库中的每一条记录,转化成为每一个实体对象。

DataSet的映射:以表的形式去映射。跟实体以记录的形式映射不同。通过将数据库中的表直接映射为DataTable,再将这个DataTable添加到DataSet中,最后把这个DataSet拿到应用程序中去用。

区别:

实体完全是面向对象。把每条记录看成是一个对象。

DataSet是将原数据库中的二维表拿过来,表现到界面上。完全是一种二维形式的,没有对象的概念。

自定义DataSet:

DataSet----DataTable----DataColumn-----DataRow

DataSet可以充当DataGridView的一种数据源。

创建DataSet的两种方法:

1.SqlDataAdapter.Fill(dataSet,表名)

通过Fill()方法,将二维表填充到DataSet中

适配器模式(23种设计模式中的一种)

2.自定义DataSet

配置文件:

数据库连接字符串写在配置文件中,可以便于修改。通过以记事本的形式打开配置文件后,可以直接修改配置文件,因为配置文件是文本形式的,所以不必将程序重新编译。

要将配置文件写在主程序(由Main方法的层)当中。

connectionString="server.;database=MySchool;uid=sa;pwd=accp"/>

ConfigurationManager.ConnectionString["conStr"].ToString();

为ComboBox指定数据源需要指定数据/显示字段(DisplayMember)和值字段(ValueMember)。

值字段是指有一个编号。值一般是看不见的。相当于主键。

自定义DataSet:

DataSet dataSet = new DataSet();

DataTable dtClass = new DataTable("Class");

DataColumn dcClassName = new

DataColumn("className",typeof(string));

DataColumn dcGradeId = new

DataColumn("gradeId",typeof(int));

dtClass.Columns.Add(dcClassName);

dtClass.Columns.Add(dcGradeId);

DataRow drClass = dtClass.NewRow();

drClass["className"] = this.txtClassName.Text;

drClass["gradeId"] =

objGrade.GetGradeIdByGradeName(this.cboGrade.Text);

dtClass.Rows.Add(drClass);

dataSet.Tables.Add(dtClass);

DataView为不同的用户展示不同的数据

DataSet的作用:

数据查询,多张表联合查询时,从若干张不同的表中,抽取出若干列,装在一起,无法定义出一个实体,并且没有必要专门针对这次查询,定义出一个实体,实体类在查询某一张表所有数据时,非常好使,也很好分析,因为它是面向对象的。但是在刚才那种情况下,应该使用DataSet,因为DataSet是一种自定义的二维表,将从不同的表中查询出的列数据,封装到DataSet中,与数据绑定控件结合很好。因为数据绑定控件可以接收实现了IList接口的集合,也可以接收DataTable,dgvTeacher.DataSource

= dataSet.Tables["TeacherTable"];

业务:

有在业务逻辑层做的,也有在存储过程中做的。

如果将业务写在存储过程中,会大量返回DataSet。

comm.CommandType = CommandType.TableDirect;

执行一张表,把表名当成是Command命令的执行。

默认是执行普通文本:CommandType.Text

若执行存储过程,那么是:CommandType.StoredProcedure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值