我使用的标准ADO.NET“DbConnection.GetSchema” API读取数据库模式VistaDB的4.0数据库。我还没有找到一种方式来获得的“身份”设置列?在“列”模式集合似乎并没有对此有一个栏,我不知道任何其他集合的,我应该看看。

如果它是不可能通过查询任何可用的集合,我必须查询一些系统表或视图?

任何帮助,将不胜感激。

有帮助吗?

解决方案

有没有 “SYS” 在VistaDB的表。没有包含大部分的[数据库模式]表中你需要什么,但。

<强> [数据库模式]

您可以使用数据库架构的表像这样得到一个数据库中的标识列:

select * from [database schema] where typeid = 6

查找范围中的列表typeid的帮助文件和他们的意思。

然后,一旦你有列表,你可以匹配它的typeid的对表,看看表中标识列是从哪里来的。

与数据库的架构表,唯一的缺点是,你不能自我引用或将其加入自己(设计限制)。所以,如果你需要从自身拉和参考你所要做的是在两个命令,或者通过一个临时表。帮助文件具有如何做到这一点,以及一个例子。

<强>另一种方法

您还可以找到使用VistaDB的存储过程的所有标识列:

select * from VistaDBColumnSchema() where is_identity = true

<强> DDA

如果你需要找到下一个值,种子等也可以得到那些通过DDA(直接数据访问)方法。

一个IVistaDBTableSchema对象上的身份属性是标识该表的集合。然后该集合可以走到拉的各个值。

包括的身份信息是种子,步骤,表名和列名。

<强> 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());
                }
            }
        }
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top