如何制作DataTable ReadOnly?

时间:2012-12-30 17:47:22

标签: vb.net ado.net sqlclient

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

有没有确保我的函数返回的DataTable是ReadOnly? 在旧的ADODB时代,我使用ADODB.LockTypeEnum标记返回的记录集是只读的。

通过ReadOnly,我的意思是我的函数调用者(获取返回的DataTable)无法更改Rows数据和/或根本不更新它(即readonly)。

2 个答案:

答案 0 :(得分:1)

  

有没有确保我的函数返回的DataTable   只读?

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

我认为避免更改桌面的唯一方法是:尝试处理RowChanged事件,然后再调用RejectChanges

答案 1 :(得分:1)

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

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