The TableMetaData object can be used to obtain information about an specific table
and it's columns.
1 Get table metadata
You can obtain a TableMetaData object from connection by table name.
Copy
var md = Ax.db.getMetaData().getTableMetaData("systables", true); console.log(" NRows: " + md.getRowCount()); console.log(" NCols: " + md.getColumnCount()); console.log(" ColNames: " + md.getColumnNames());
NRows: 137
NCols: 26
ColNames: [tabname, owner, partnum, tabid, rowsize, ncols, nindexes, nrows, created, version, tabtype, locklevel, npused, fextsize, nextsize, flags, site, dbname, type_xid, am_id, pagesize, ustlowts, secpolicyid, protgranularity, statchange, statlevel]
Even you can request Column metadata Info for Temporary tables:
Copy
Ax.db.execute('DROP TABLE IF EXISTS test') Ax.db.execute('CREATE TEMP TABLE test(a char(1))') let md = Ax.db.getMetaData().getTableMetaData('test', true); console.log(md.getColumnNames()); console.log("Contains column a?: " + md.getColumnNames().contains("a"));
[a]
Contains column a?: true
2 Column metadata
The following example shows how to get column metadata.
Copy
<script> var refresh = false; Ax.db.execute("DROP TABLE IF EXISTS t1 "); Ax.db.execute("CREATE TABLE t1 (a DECIMAL(12, 3) DEFAULT 10.2 NOT NULL, b VARCHAR(20))"); var md = Ax.db.getMetaData().getTableMetaData("t1", refresh); for (var columnName of md.getColumnNames()) { console.log(" Name: " + columnName); console.log(" Size: " + md.getColumnSize(columnName)); console.log(" Scale: " + md.getColumnScale(columnName)); console.log(" Precision: " + md.getColumnPrecision(columnName)); console.log(" Default: " + md.getColumnDefault(columnName)); console.log(" Nullable: " + md.isColumnNullable(columnName)); } Ax.db.execute('DROP TABLE t1'); </script>
Name: a
Size: 12
Scale: 3
Precision: 12
Default: 10,2000000000
Nullable: false
Name: b
Size: 20
Scale: 0
Precision: 20
Default: null
Nullable: true