被骗了:MSDN上的OracleConnection.GetSchema 方法

ChenReal

今天被MSDN郁闷了一回。。 因为有个Oracle的项目要做,需要导出数据结构,在SQL或者ACCESS下直接用ODBCConnection.GetSchema就没问题了,但这回需要用OracleConnection,两个东东用起来还是有差别的。先惟有查查资料。。

不知道是我的机器问题还是怎么回事,上MSDN查找OracleConnection.GetSchema 的时候浏览器总是死翘翘的,最终也只得利用baidu的cache来看该页的内容。 http://msdn2.microsoft.com/zh-cn/library/ms136141(VS.80).aspx 上面是这么写的:

restrictionValues 参数可以为一个特定集合提供由限制集合指定的 n 层深的值。为了在给定限制上设置值,并且不设置其他限制的值,您需要将前置限制设置为空,然后为您想指定值的限制设置相应的值。

例如,对于“Tables”集合,如果“Tables”集合有 3 个限制:数据库、所有者和表名,并且您想只返回与所有者“Carl”关联的表,则您需要传入下列值(至少):null、“Carl”。如果没有传入限制值,则使用该限制的默认值。这与传入 null 是相同的映射,但不同于为参数值传入空字符串的情况。在这种情况下,空字符串 ("") 被认为是指定参数的值。

当我按他所说的用三个个限制,根本就不是那回事……而且超过了两个限制会报错! 终于意识到,自己被MSDN忽悠了!没办法,“马死落地行”,只能靠自己了。经过多次反复的实践,终于把答案弄出来了! OracleConnection.GetSchema 的restrictionValues 只有两个值:{ OWNER ,TABLE_NAME }

有些时候还是不能迷信官方资料,自己实践出来的才是王道!