2

我正在编写一个返回 DataTable 对象的函数。我正在使用DataTable.Load( DataReader)来填充 DataTable。但是,据我了解,虽然底层 DataReader 是 ReadOnly,Forward-only;一旦它被加载到数据表中;其他程序员仍然可以通过DataTable.Rows(x).Column(y).ReadOnly = False然后设置值来更新数据。

是否可以确保我的函数返回的 DataTable 是只读的?在较早的 ADODB 时代,我使用 ADODB.LockTypeEnum 将返回的记录集标记为只读。

只读,我的意思是我的函数的调用者(获取返回的 DataTable)不能对行数据进行更改和/或根本更新它(即只读)。

4

2 回答 2

2

是否可以确保我的函数返回的 DataTable 是只读的?

不,通常没有这样的方法或方式使其只读。与DataViewwhich 具有AllowEdit用于此目的的属性不同(因此您可以返回 DataView )。

我看到避免更改表的唯一方法是:尝试处理RowChanged事件并RejectChanges随后调用。

于 2012-12-30T18:03:47.817 回答
1

另一种防止调用者破坏您的内部 DataTable(或 DataSet)的方法是返回一个副本。DataSet 和 DataTable 类都有一个 Copy() 方法,可以复制原始的结构和数据。

显然,这对于包含相对少量数据的 DataTable 会更好。

于 2017-07-13T14:02:16.617 回答