# Class JDBCFormatter

java.lang.Object
uk.ac.starlink.table.jdbc.JDBCFormatter

public class JDBCFormatter extends Object
Handles conversion of a StarTable into a new table in an RDBMS.

Author:
  Mark Taylor

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`JDBCFormatter.SqlColumn`
Describes a column as it will be written to a table in an RDBMS.

## Constructor Summary

Constructors
Constructor
Description
`JDBCFormatter(Connection conn, StarTable table)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`createJDBCTable(String tableName, WriteMode mode)`
Writes data from this formatter's input table into the database.
`JDBCFormatter.SqlColumn`
`getColumn(int icol)`
Returns the SqlColumn object describing how a given column of this formatter's input table will be written into the RDBMS.
`String`
`getCreateStatement(String tableName)`
Returns the text of a suitable CREATE TABLE statement.
`String`
`getInsertStatement(String tableName)`
Returns the text of a suitable parametric statement for inserting a row.
`int`
`getSqlType(Class<?> clazz)`
Returns an SQL type code suitable for a given class.
`static void`
`main(String[] args)`
Main method.
`String`
`typeName(int sqlType)`
Returns the name used by the connection's database to reference a JDBC type.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### JDBCFormatter

public JDBCFormatter(Connection conn, StarTable table) throws SQLException, IOException
Constructor.

Parameters:
  `conn` - JDBC connection
  `table` - input table
Throws:
  `SQLException`
  `IOException`

## Method Details

### getCreateStatement

public String getCreateStatement(String tableName)
Returns the text of a suitable CREATE TABLE statement.

Parameters:
  `tableName` - name of the new SQL table

### getInsertStatement

public String getInsertStatement(String tableName)
Returns the text of a suitable parametric statement for inserting a row. Data placeholders for writable columns will be represented by '?' characters.

Parameters:
  `tableName` - name SQL table for insertion

### createJDBCTable

public void createJDBCTable(String tableName, WriteMode mode) throws IOException, SQLException
Writes data from this formatter's input table into the database. This method is somewhat misnamed - depending on the write mode, a new table may or may not be created in the database.

Parameters:
  `tableName` - name of the new table to write to in the database
  `mode` - mode for writing records
Throws:
  `IOException`
  `SQLException`

### getColumn

public JDBCFormatter.SqlColumn getColumn(int icol)
Returns the SqlColumn object describing how a given column of this formatter's input table will be written into the RDBMS. If the value for a given column is `null`, it means that column cannot, and will not, be written.

Parameters:
  `icol` - column index in input table
Returns:
  SQL column description

### getSqlType

public int getSqlType(Class<?> clazz)
Returns an SQL type code suitable for a given class.

Parameters:
  `clazz` - java class of data
Returns:
  one of the `Types` codes

### typeName

public String typeName(int sqlType) throws SQLException
Returns the name used by the connection's database to reference a JDBC type.

Parameters:
  `sqlType` - type id (as per `Types`)
Returns:
  connection-specific type name
Throws:
  `SQLException`

### main

public static void main(String[] args) throws IOException, SQLException
Main method. Not really intended for use but may be helpful with debugging.

Throws:
  `IOException`
  `SQLException`