获得“身份”设置在VistaDB的列
题
我使用的标准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());
}
}
}
}
}
不隶属于 StackOverflow