我正在编写一个返回DataTable对象的函数。我使用DataTable.Load( DataReader)
来填充DataTable。然而,据我所知,虽然底层的DataReader是只读的,只向前;一旦它被加载到DataTable;其他程序员仍然可以通过DataTable.Rows(x).Column(y).ReadOnly = False
更新数据,然后设置值。
是否有办法确保我的函数返回的数据表是只读的?在较早的ADODB时代,我使用ADODB。LockTypeEnum用于标识返回的记录集为只读。
通过只读,我的意思是调用者到我的函数(谁得到返回的数据表)不能改变行数据和/或更新它在所有(即只读)。
是否有办法确保我的函数返回的数据表是只读的吗?
不,通常没有这样的方法或方法使其只读。与DataView
不同,AllowEdit
具有此目的的属性(因此您可以返回DataView代替)。
我看到避免表上变化的唯一方法是:尝试处理RowChanged
事件,然后调用RejectChanges
。
防止调用者破坏内部DataTable(或DataSet)的另一种方法是返回一个副本。DataSet和DataTable类都有一个Copy()方法,可以复制原始的结构和数据。
显然,对于包含相对较少数据量的数据表,这将工作得更好。