Tabellen und Spalteninfos aus Datenbank
Informationen
- Kategorien: Kernel | Klassenformeln
- Version: 17.0.0.5129
- Veröffentlichungsdatum: Freitag, 12. Juli 2013
- Entwickler: Götzen
- Benötigt Datenbankänderung: Ja
- Betreff: Funktionen zum Auslesen von Tabellen und Spalteninformationen einer Datenbank.
Beschreibung
Funktionen zum Auslesen von Tabellen und Spalteninformationen einer Datenbank:
DB_GetTableNames(), DB_LoadColumnMetadataCache(), DB_GetColumnNames(), DB_HasTable(), DB_HasTableColum(), DB_GetColumnSize(), DB_GetColumnPrecision(), DB_GetColumnType(), DB_IsColumnNullable(), DB_ReleaseColumnMetadataCache()
Verwendung siehe Beispielcode.
Beispielcode
function void GetDatabaseMetadata( string $sDataBase, byref string $sDataToWrite )
{
var string $TableNames[];
var string $ColumnNames[];
var string $sError;
var string $TableName;
var string $ColumnName;
var int $Index;
var int $nCount;
var int $iFlags;
var int $IndexColumns;
var int $nCountColumns;
var int $ColumnType;
var int $ColumnSize;
var int $ColumnNullable;
var int $ColumnPrecision;
$ColumnType = 0;
$ColumnSize = 0;
$ColumnNullable = 0;
$ColumnPrecision = 0;
$sError = "";
$iFlags = 0; // Cached
// Tabellennamen auslesen
if( !DB_GetTableNames( $sDataBase, $iFlags, $TableNames, $sError ))
{
MessageBox( "Error: GetTableNames " + $sError );
return;
}
// Columnmetadaten auslesen und cachen
//
DB_LoadColumnMetadataCache( $sDataBase, $TableNames, $sError );
$nCount = GetSize( $TableNames );
for ( $Index = 0; $Index < $nCount; $Index++ )
{
$TableName = $TableNames[ $Index ];
if( DB_HasTable( $sDataBase, $iFlags, $TableName, $sError ) && StrLength( $sError ) == 0 )
{
$sDataToWrite = $sDataToWrite + "\nTabelle: " + $TableName + "\n Columns:\n";
// Spaltennamen auslesen
//
if( !DB_GetColumnNames( $sDataBase, $iFlags, $TableName, $ColumnNames, $sError ))
{
MessageBox( "Error: GetColumnNames " + $sError );
return;
}
$nCountColumns = GetSize( $ColumnNames );
// Informationen jeder einzelnen Spalte ausgeben
//
for ( $IndexColumns = 0; $IndexColumns < $nCountColumns; $IndexColumns++ )
{
$ColumnName = $ColumnNames[ $IndexColumns ];
if( DB_HasTableColum( $sDataBase, $iFlags, $TableName, $ColumnName, $sError ) && StrLength( $sError ) == 0 )
{
$sDataToWrite = $sDataToWrite + "\tName: " + $ColumnName;
DB_GetColumnType( $sDataBase, $iFlags, $TableName, $ColumnName, $ColumnType, $sError );
$sDataToWrite = $sDataToWrite + " Type: " + IntToStr( $ColumnType );
DB_GetColumnSize( $sDataBase, $iFlags, $TableName, $ColumnName, $ColumnSize, $sError );
$sDataToWrite = $sDataToWrite + " Size: " + IntToStr( $ColumnSize );
DB_GetColumnPrecision( $sDataBase, $iFlags, $TableName, $ColumnName, $ColumnPrecision, $sError );
$sDataToWrite = $sDataToWrite + " Precision: " + IntToStr( $ColumnPrecision );
DB_IsColumnNullable( $sDataBase, $iFlags, $TableName, $ColumnName, $ColumnNullable, $sError );
$sDataToWrite = $sDataToWrite + " Nullable: " + IntToStr( $ColumnNullable ) + "\n";
}
}
}
}
// Columnmetadaten wieder freigeben
//
DB_ReleaseColumnMetadataCache();
}
// Testaufruf
//
ondisplayfunction
{
SetForMetadataMode( 1 );
if ( IsMainMenuContext())
{
SetFunctionLabel( "Test/DBMetaData" );
EnableFunction( 1 );
ShowFunction( 1 );
}
}
oncallfunction
{
var string $sFilePath;
var string $sDataToWrite;
var string $sDataBase;
$sFilePath = "C:\\temp\\";
$sDataBase = "METADATA";
$sDataToWrite = "***************************************************";
$sDataToWrite = $sDataToWrite + "\n\nDatabase: " + $sDataBase + "\n";
Hourglass( 1 );
GetDatabaseMetadata( $sDataBase, $sDataToWrite );
WriteTextFile( $sDataToWrite, $sFilePath + "Metadata.txt", 0 );
$sDataBase = "USERDATA";
$sDataToWrite = "***************************************************";
$sDataToWrite = $sDataToWrite + "\n\nDatabase: " + $sDataBase + "\n";
GetDatabaseMetadata( $sDataBase, $sDataToWrite );
WriteTextFile( $sDataToWrite, $sFilePath + "UserData.txt", 1 );
Hourglass( 0 );
}