VistaDB에는 "sys"테이블이 없습니다. 비록 당신이 필요로하는 대부분을 포함하는 [데이터베이스 스키마] 테이블이 있습니다.
[데이터베이스 스키마]
이 같은 데이터베이스 스키마 테이블을 사용하여 데이터베이스의 ID 열을 얻을 수 있습니다 :
유형 ID 목록과 그들이에 대한 도움말 파일에
select * from [database schema] where typeid = 6
봐 평균.
그런 다음 목록을 가져온 후에는 해당 테이블을 식별 할 수있는 유형 ID를 테이블의 typeid와 비교할 수 있습니다.
데이터베이스 스키마 테이블의 유일한 catch는 자체 참조 또는 자체 조인 (디자인 제한)이 불가능하다는 것입니다. 따라서 끌어다 놓고 참조해야하는 경우 두 명령 또는 임시 테이블을 통해이를 수행해야합니다. 도움말 파일에는이를 수행하는 방법의 예가 있습니다.
다른 방법
당신은 또한 VistaDB 저장된 프로 시저 사용하여 모든 ID 열 찾을 수 있습니다
: 당신이 다음 값을 찾을 필요가
select * from VistaDBColumnSchema() where is_identity = true
DDA
을, 씨앗 , 등 당신은 또한 DDA (직접 데이터 액세스) 방법을 통해 얻을 수 있습니다.
IVistaDBTableSchema 개체의 Identities 속성은 해당 테이블의 ID 컬렉션입니다. 그런 다음 해당 컬렉션을 걸어 개별 값을 가져올 수 있습니다.
포함 된 ID 정보는 Seed, Step, Tablename 및 Columnname입니다.
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());
}
}
}
}
}