首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取VistaDB中列的“Identity”设置

获取VistaDB中列的“Identity”设置
EN

Stack Overflow用户
提问于 2010-02-26 22:53:12
回答 1查看 595关注 0票数 1

我正在使用标准的ADO.NET 'DbConnection.GetSchema‘API读取VistaDB 4.0数据库的数据库模式。我还没有找到获取列的'Identity‘设置的方法吗?'Columns‘模式集合似乎没有对应的列,我也不知道还有没有其他应该查看的集合。

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

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-01 22:23:50

VistaDB中没有"sys“表。有一个数据库模式表,其中包含了您需要的大部分内容。

数据库架构

您可以使用数据库模式表获取数据库的标识列,如下所示:

代码语言:javascript
复制
select * from [database schema] where typeid = 6

在帮助文件中查找typeid列表以及它们的含义。

一旦有了列表,就可以将其与表的类型it进行匹配,以查看标识列来自哪个表。

数据库架构表的唯一问题是您不能自引用或连接它自己(设计限制)。因此,如果您需要从自身提取和引用,则必须通过两个命令或通过一个临时表来完成。帮助文件中也有一个如何做到这一点的示例。

备用方式

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

代码语言:javascript
复制
select * from VistaDBColumnSchema() where is_identity = true

DDA

如果您需要查找下一个值、种子等,您也可以通过DDA (直接数据访问)方法获取这些值。

IVistaDBTableSchema对象的Identities属性是该表的标识的集合。然后,可以遍历该集合以提取单个值。

包含的标识信息包括种子、步骤、表名和列名。

ADO.NET GetSchemaTable Way

是的,还有另一种方法。您可以在读取器上调用GetSchemaTable,以获取有关底层结构的更多信息。

代码语言:javascript
复制
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());
                }
            }
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2342418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档