没有合适的资源?快使用搜索试试~ 我知道了~
在ASP.NET 2.0中操作数据之六十八:为DataTable添加额外的列
0 下载量 37 浏览量
2021-01-02
15:27:17
上传
评论
收藏 527KB PDF 举报
温馨提示
导言: 当向类型化的数据集(Typed DataSet)添加一个TableAdapter时,相应的DataTable的构架已经由TableAdapter的主查询定义好了.比如,如果主查询返回A, B,C这3个域,那么 DataTable将有对应的3个列A, B,和C.除了主查询以外,TableAdapter还可以包含其他的查询,可能是返回基于某些参数的数据。比如,ProductsTableAdapter的主查询返回所有产品的信息,此外,ProductsTableAdapter还包含诸如GetProductsByCategoryID(categoryID) 和 GetProductByPro
资源推荐
资源详情
资源评论
在在ASP.NET 2.0中操作数据之六十八:为中操作数据之六十八:为DataTable添加额外添加额外
的列的列
导言:导言:
当向类型化的数据集(Typed DataSet)添加一个TableAdapter时,相应的DataTable的构架已经由TableAdapter的主查询定
义好了.比如,如果主查询返回A, B,C这3个域,那么 DataTable将有对应的3个列A, B,和C.除了主查询以外,TableAdapter还
可以包含其他的查询,可能是返回基于某些参数的数据。比如,ProductsTableAdapter的主查询返回所有产品的信息,此
外,ProductsTableAdapter还包含诸如GetProductsByCategoryID(categoryID) 和 GetProductByProductID(productID)的方
法,它们根据指派的参数返回特定的产品信息.
如果TableAdapter的方法返回的列涵盖在主查询里,工作起来没有问题。但如果返回的列并没有涵盖在主查询,那么我们
就需要对DataTable的构架进行扩充.在第35章《使用Repeater和DataList单页面实现主/从报表》里,我们向
CategoriesTableAdapter添加方法以返回 CategoryID, CategoryName, Description和NumberOfProducts列。其中前3列是涵
盖在主查询里的,而NumberOfProducts列没有在主查询里定义,它返回的是每个category相关产品的数目.我们可以向
CategoriesDataTable手工添加一列,以便于统计从新方法返回的NumberOfProducts列的值.
在第52章《使用FileUpload上传文件》我们探讨过,对使用ad-hoc SQL statements构建且其方法返回的列超出主查询范
围的TableAdapters必须多加留意.因为一旦重新运行设置向导的话,它将对TableAdapter的方法进行更新,使其返回的列与主
查询相匹配.不过如果使用存储过程的话就不会出现这种情况.
在本文我们将考察如何扩展DataTable的构架以包含额外的列。我们都知道使用ad-hoc SQL statements构架的
TableAdapter不稳定,本文我们将用存储过程来构架.你可以参考第65章《在TableAdapters中创建新的存储过程》和第66章
《在TableAdapters中使用现有的存储过程》来获取设置TableAdapter使用存储过程的更多信息.
第一步:向第一步:向ProductsDataTable添加一个添加一个PriceQuartile列列
在第67章里我们创建了一个名为NorthwindWithSprocs的类型化的数据集.该数据集目前包含2个DataTables:
ProductsDataTable以及 EmployeesDataTable。其中ProductsTableAdapter包含3个方法:
.GetProducts——主查询,返回Products表的所有记录
.GetProductsByCategoryID(categoryID)——根据指定的categoryID值返回所有产品
.GetProductByProductID(productID)——根据指定的productID值返回所有的产品
主查询及另外2个方法都返回相同的数据列,也就是Products表的所有列,并没有返回Categories 以及Suppliers表的相关
数据.
在本文,我们将向ProductsTableAdapter添加一个名为GetProductsWithPriceQuartile 的方法,它返回所有的产品.除了标
准的数据列外,它还返回PriceQuartile列,它用四分位数来衡量产品价格下跌程度.如果产品价格上升了25%,那么其值为1,
如果下降为25%,那么其值为4.在我们创建一个存储过程来返回这种信息之前,我们首先需要更新ProductsDataTable,新添
一列来包含GetProductsWithPriceQuartile方法返回的 PriceQuartile值.
打开NorthwindWithSprocs数据集,在ProductsDataTable上右键单击,选择“ Add” ,再选择“Column”.
图图1:向:向ProductsDataTable新添一列新添一列
这将向DataTable新添一列,名为“Column1”,类型为System.String.我们需要将该列的名称改为“PriceQuartile”,类型改
为System.Int32,因为它的值介于1到4之间.在ProductsDataTable 选中我们新添加的列,在属性窗口里设置其Name属性为
“PriceQuartile”,DataType属性为System.Int32.
图图2:设置该新列的:设置该新列的Name 和和 DataType属性属性
就像图2所示,我们还可以设置其它的属性.比如,是否该列的值必须为unique;如果该列为自增列,其值是否允许为
NULL等等.不过我们这里使用其默认值.
第二步:创建第二步:创建GetProductsWithPriceQuartile方法方法
现在我们已经对ProductsDataTable进行了更新以包含PriceQuartile列,我们将要创建一个GetProductsWithPriceQuartile
方法.在TableAdapter上单击右键,再选择“Add Query”.这将开启TableAdapter查询设置向导,它首先询问我们是使用ad-hoc
SQL statements还是使用现有的存储过程或新建一个存储过程.我们选择“Create new stored procedure”,再点Next.
图图3:在:在TableAdapter向导里创建新的存储过程向导里创建新的存储过程
接下来,如图4所示,向导询问我们添加的是那种类型的查询,由于GetProductsWithPriceQuartile方法将返回Products表
的所有记录以及所有列,我们选择“SELECT which returns rows”项,再点Next.
剩余8页未读,继续阅读
资源评论
weixin_38722874
- 粉丝: 3
- 资源: 916
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Ruby语言教程从介绍入门到精通详教程跟代码.zip
- PM2.5-Prediction-Based-on-Random-Forest-Algorithm-master.zip
- Delphi开发详解:从入门到高级全面教程
- 物理机安装群晖DS3617教程(用U盘做引导)
- 使用jQuery实现一个加购物车飞入动画
- 本项目旨在开发一个基于情感词典加权组合方式的文本情感分析系统,通过以下几个目标来实现: 构建情感词典:收集并整理包含情感极性(正面或负面)的词汇 加权组合:通过加权机制,根据词汇在文本中的重要性、
- Visual Basic从入门到精通:基础知识与实践指南
- 炫酷文本粒子threejs特效
- hreejs地球世界轮廓线条动画
- 以非线性最小二乘算法为基础的空间坐标转换探讨
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功