# JSTable

## Overview

The `JSTable` represents a database table object used in Servoy, accessible through the maintenance plugin or the `databaseManager`. It provides functionality for interacting with table metadata, columns, and related properties within a database. This object allows developers to retrieve table-specific details such as the SQL name, quoted identifiers, server name, and the table's data source URI.

## Functionality

`JSTable` supports accessing column data, including retrieving names of all columns or primary key columns in a table. Developers can obtain a specific column as a `JSColumn` object or determine if a table is marked as a metadata table. Additionally, table attributes like the SQL name and quoted SQL name can be utilized for database queries or raw SQL operations.

## Methods Summarized

| Type                                                                                       | Name                                                          | Summary                                                                                           |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| [JSColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jscolumn) | [getColumn(name)](#getcolumn-name)                            | Returns a JSColumn for the named column (or column dataproviderID).                               |
| [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array)                 | [getColumnNames()](#getcolumnnames)                           | Returns an array containing the names of all table columns.                                       |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)               | [getDataSource()](#getdatasource)                             | Returns the table data source uri.                                                                |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)               | [getQuotedSQLName()](#getquotedsqlname)                       | Returns a quoted version of the table name, if necessary, as defined by the actual database used. |
| [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array)                 | [getRowIdentifierColumnNames()](#getrowidentifiercolumnnames) | Returns an array containing the names of the identifier (PK) column(s).                           |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)               | [getSQLName()](#getsqlname)                                   | Returns the table name as defined in the database.                                                |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)               | [getServerName()](#getservername)                             | Returns the Servoy server name.                                                                   |
| [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean)             | [isMetadataTable()](#ismetadatatable)                         | Returns whether table was flagged as metadata table.                                              |

## Methods Detailed

### getColumn(name)

Returns a JSColumn for the named column (or column dataproviderID).

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **name** The name of the column to return the value from.

**Returns:** [JSColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jscolumn) JSColumn column.

**Sample**

```js
var jsTable = databaseManager.getTable('udm', 'campaigns')
var jsColumn = jsTable.getColumn('campaign_name')
```

### getColumnNames()

Returns an array containing the names of all table columns.\
If the table is in mem, then the internal rowid column name is not returned.

**Returns:** [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) String array of column names.

**Sample**

```js
var jsTable = databaseManager.getTable('udm', 'campaigns')
var columnNames = jsTable.getColumnNames()
```

### getDataSource()

Returns the table data source uri.

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) String datasource uri.

**Sample**

```js
var jsTable = databaseManager.getTable('udm', 'campaigns')
var dataSource = jsTable.getDataSource()
```

### getQuotedSQLName()

Returns a quoted version of the table name, if necessary, as defined by the actual database used.

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) String table name, quoted if needed.

**Sample**

```js
//use with the raw SQL plugin:
//if the table name contains characters that are illegal in sql, the table name will be quoted
var jsTable = databaseManager.getTable('udm', 'campaigns')
var quotedTableName = jsTable.getQuotedSQLName()
plugins.rawSQL.executeSQL('udm',  quotedTableName,  'select * from ' + quotedTableName + ' where is_active = ?', [1])
```

### getRowIdentifierColumnNames()

Returns an array containing the names of the identifier (PK) column(s).\
&#x20;Please note that if the table is in mem, then the internal rowid column name is also returned.

**Returns:** [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) String array of row identifier column names.

**Sample**

```js
var jsTable = databaseManager.getTable('udm', 'campaigns')
var identifierColumnNames = jsTable.getRowIdentifierColumnNames()
```

### getSQLName()

Returns the table name as defined in the database.

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) String table sql name.

**Sample**

```js
var jsTable = databaseManager.getTable('udm', 'campaigns')
var tableNameForQuery = jsTable.getSQLName()
```

### getServerName()

Returns the Servoy server name.

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) String server name.

**Sample**

```js
var jsTable = databaseManager.getTable('udm', 'campaigns')
var serverName = jsTable.getServerName()
```

### isMetadataTable()

Returns whether table was flagged as metadata table.

**Returns:** [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean) boolean is metadata

**Sample**

```js
var jsTable = databaseManager.getTable('udm', 'campaigns')
var isMetaDataTable = jsTable.isMetadataTable()
```

***
