【发布时间】:2014-06-24 21:44:15
【问题描述】:
在 C# 中是否有办法以相对于数据库/平台无关的方式确定数据库字段是否可以为空?换句话说,在 Oracle 中我可以这样做:
select column_name, nullable
from all_tab_columns
where table_name = :TABLE
但这种方法受限于 Oracle,我必须为其他平台想出一个等效方法。
我希望通过数据提供者来实现这一点。我能够使用类似的东西来提取数据类型:
AseCommand cmd = new AseCommand(sql, conn);
AseDataReader reader = cmd.ExecuteReader();
for (int i = 0; i < reader.FieldCount; i++)
{
string name = reader.GetName(i);
string dbTypeName = reader.GetDataTypeName(i);
Type dbType = reader.GetFieldType(i);
}
在本例中是 Sybase,但该方法在其他平台上是多态的,至少对于我一直在使用的数据库而言。
我唯一缺少的是该字段是否可以为空。
【问题讨论】:
-
可能与此 [link][1] 重复,但与平台无关的部分除外。 [1]:stackoverflow.com/questions/3253943/…
-
感谢您的链接。不幸的是,当它为空时,这有助于我处理该值,但它并没有告诉我该字段是否可能为空。不过,这实际上是值得一读的。
-
@ChrisHamel 我的答案是你想要的吗?