的栏目设置我使用的是标准的ADO.NET“DbConnection.GetSchema” API读取数据库架构VistaDB的4.0数据库。我还没有找到一种方法来获得列的“身份”设置? 'Columns'模式集合似乎没有列,因此我不知道应该查看其他任何集合。获得“身份”在VistaDB的
如果通过查询任何可用集合是不可能的,那么我是否必须查询某个系统表或视图?
任何帮助,将不胜感激。
的栏目设置我使用的是标准的ADO.NET“DbConnection.GetSchema” API读取数据库架构VistaDB的4.0数据库。我还没有找到一种方法来获得列的“身份”设置? 'Columns'模式集合似乎没有列,因此我不知道应该查看其他任何集合。获得“身份”在VistaDB的
如果通过查询任何可用集合是不可能的,那么我是否必须查询某个系统表或视图?
任何帮助,将不胜感激。
有在VistaDB的没有 “SYS” 表。有一个[数据库模式]表,其中包含大部分你需要的东西。
[数据库模式]
可以使用数据库架构的表像这样得到一个数据库中的标识列:
select * from [database schema] where typeid = 6
查找范围为typeid的名单和他们的帮助文件意思。
然后,一旦你有了这个列表,你可以将它匹配到表的typeid以查看标识列来自哪个表。
数据库模式表的唯一问题是您无法自我引用或将其加入自身(设计限制)。因此,如果您需要从自身中提取和引用,则必须使用两个命令或通过临时表来完成。帮助文件也有一个如何做到这一点的例子。
替代方法
您还可以找到使用VistaDB的存储过程的所有标识列:如果你需要找到下一个值
select * from VistaDBColumnSchema() where is_identity = true
DDA
,种子等等,你也可以通过DDA(直接数据访问)方法获得这些信息。
IVistaDBTableSchema对象上的Identities属性是该表的标识的集合。然后可以采集这个集合来拉取个体价值。
包括的身份信息是种子,步骤,表名和列名。
ADO.NET的GetSchemaTable路
是的,还有另一种方式。你可以在阅读器上调用GetSchemaTable获得更多关于底层结构的信息。
using (VistaDBConnection cn = new VistaDBConnection("Data Source=" + dbName))
{
cn.Open();
using (VistaDBCommand cmd = new VistaDBCommand("Select * from simpletable", cn))
{
using (VistaDBDataReader myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo))
{
//Retrieve column schema into a DataTable.
DataTable schemaTable = myReader.GetSchemaTable();
foreach (DataRow myField in schemaTable.Rows)
{
foreach (DataColumn myProperty in schemaTable.Columns)
{
System.Diagnostics.Debug.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
}
}
}
}
}