请教个菜鸟问题,如何实现DATASET这样的类?

老龙友 2009-05-20 04:37:58
如何实现DATASET这样的类?

我对类的继承概念似懂非懂

我想知道,形如下面的语句:

DataSet1.Tables(0).Rows(0).Item(0)

里面的Tables,Rows,Item是怎么来的?

为什么DataSet后面就只能跟“Tables”而不能跟“Rows”?

...全文
119 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloyx888 2009-06-04
  • 打赏
  • 举报
回复
恩,这几天一直没有时间上线,今天看了你的贴子,确实是这样的,你说的这个东西,我也没有试过,不过理论上是可以的,没有帮上你是在是不好意思。
老龙友 2009-05-22
  • 打赏
  • 举报
回复
终于知道了

唉,求人不如求己啊

实际上“Tables”是“DataSet”的一个属性,但这个属性的类型是“DataTable"

因此,只需按如下方式即可实现:

Public Class DataSet
Public Property Table() as DataTable
'Code Here
End Property
End Class

Public Class DataTable
Public Property Row as DataRow
'Code Here
End Property
End Class

Public Class DataRow
'Code Here
End Class

实际上微软的DataSet里面是DataTable的集合,也就是Tables 而不是简单的Table,因为一个DataSet里面可以有多个Table
但这并不影响原理的表述

如果要把Table换成Tables,还需要有一个DataTables的类
具体可参考以下代码:
(仅为抛砖引玉)

Public Class WXTables
Private _col As Collection

Public ReadOnly Property Col() As Collection
Get
Return _col
End Get
End Property

Public Sub add(ByVal tmpTable As WXTable)

If IsNothing(_col) Then
_col = New Collection
End If
_col.Add(tmpTable)

End Sub
Public Function add(ByVal strKey As String) As WXTable

Dim obj As New WXTable
If IsNothing(_col) Then
_col = New Collection
End If
'obj.ID = FullSampleID
'obj.Desc = Desc

_col.Add(obj, strKey)
Return obj

End Function

Public Sub Remove(ByVal Name As String)
_col.Remove(Name)
End Sub
Public Function Count() As Integer
Return _col.Count
End Function
Public Sub Clear()
_col.Clear()
End Sub
Public Function Item(ByVal Name As String) As WXTable
Return _col(Name)
End Function
Public Function Item(ByVal key As Integer) As WXTable
Return _col(key)
End Function
End Class
baoxuetianxia 2009-05-21
  • 打赏
  • 举报
回复
mark
老龙友 2009-05-21
  • 打赏
  • 举报
回复
看来真的没人知道了。。。。

这可是菜鸟问题啊。。。。。


难道CSDN全都是菜鸟吗????
老龙友 2009-05-20
  • 打赏
  • 举报
回复
感谢四楼的回答

可能我表述的还是不清楚

我是想知道:

微软是如何写“DataSet”这个类的

他是怎么控制Table、Row、Item的关系的(就是上面说的)

假如让我们写一个类似于DataSet这样的类,里面有row,Row里面有Item,我们该怎么写?
老龙友 2009-05-20
  • 打赏
  • 举报
回复
感谢楼上的回答

但我不是想知道为什么用Table

我是想知道,这种形式是如何实现的

我假设是这样的:

Public Class DataSet

Private _Tables As DataTableCollection
Public Property Tables() As DataTableCollection
Get
Return _Tables
End Get
Set(byval Value as DataTableCollection)
_Tables = Value
End Set

End Class


Public Class DataTable
'Code Here
End Class

Public Class DataTableCollection
'Code Here
End Class



对不对?
我认为是对的

但事实是当我把这个类实例化的时候

Sub Test()

Dim A As New DataSet
A.Tables. '到这里就有问题了,在句点后面列出的可用属性和方法中,并没有DataTableCollection类中的方法和属性

End Sub


这是为什么?

gloyx888 2009-05-20
  • 打赏
  • 举报
回复
这里说一下,读取数据库内容的时候,有两种方法,一种是dataset,另一种个是datareader,
dataset后面跟的是tables是因为,你dataset1是一个表格的形式,后面对应的必须得是表。
readings 2009-05-20
  • 打赏
  • 举报
回复
DATASET是从数据源中检索到的数据在内存中的缓存。

之所以要弄成TABLE的形式,主要有以下几点原因:
1、是为了存储数据的可形式化;
2、可以和XML做到无缝,也就是说可以完整的转化成XML数据形式;
3、可以用作远程处理使用;
4、利于你很方便的遍历或索引到其中的任何数据;
老龙友 2009-05-20
  • 打赏
  • 举报
回复
没人回答吗?

是不是嫌分数太少啊,可是我已经没有分可用了

前几天发个帖子悬赏100分,竟然一个回答的都没有,害的我只能无满意结贴,真的是我的问题太难了吗???
老龙友 2009-05-20
  • 打赏
  • 举报
回复
没人知道吗?

自己顶

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧