gpt4 book ai didi

database - 获取 VistaDB 中列的 'Identity' 设置

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:59 24 4
gpt4 key购买 nike

我正在使用标准的 ADO.NET“DbConnection.GetSchema”API 读取 VistaDB 4.0 数据库的数据库架构。我还没有找到获取列的“标识”设置的方法? “列”架构集合似乎没有用于此的列,而且我不知道我应该研究的任何其他集合。

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

如有任何帮助,我们将不胜感激。

最佳答案

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());
}
}
}
}
}

关于database - 获取 VistaDB 中列的 'Identity' 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com