nl.topicus.jdbc.statement

## Class CloudSpannerStatement

- java.lang.Object
- - nl.topicus.jdbc.metadata.AbstractCloudSpannerWrapper
  - - nl.topicus.jdbc.AbstractCloudSpannerFetcher
    - - nl.topicus.jdbc.statement.CloudSpannerStatement

All Implemented Interfaces:
  AutoCloseable, Statement, Wrapper

Direct Known Subclasses:
  AbstractCloudSpannerPreparedStatement

    public class CloudSpannerStatement
    extends AbstractCloudSpannerFetcher

Author:
  loite

### Field Summary

Fields
`protected ResultSet` `lastResultSet`
`protected int` `lastUpdateCount`

### Fields inherited from interface java.sql.Statement

`CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO`

### Constructor Summary

Constructors
Constructor and Description
`CloudSpannerStatement(CloudSpannerConnection connection, com.google.cloud.spanner.DatabaseClient dbClient)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addBatch(String sql)`
`void` `cancel()`
`protected void` `checkClosed()`
`void` `clearBatch()`
`void` `clearWarnings()`
`void` `close()`
`void` `closeOnCompletion()`
`protected String` `createInsertSelectOnDuplicateKeyUpdateStatement(net.sf.jsqlparser.statement.update.Update update)` Transform the given UPDATE-statement into an "INSERT INTO TAB1 (...)
`boolean` `execute(String sql)`
`boolean` `execute(String sql, int autoGeneratedKeys)`
`boolean` `execute(String sql, int[] columnIndexes)`
`boolean` `execute(String sql, String[] columnNames)`
`int[]` `executeBatch()`
`ResultSet` `executeQuery(String sql)`
`int` `executeUpdate(String sql)`
`int` `executeUpdate(String sql, int autoGeneratedKeys)`
`int` `executeUpdate(String sql, int[] columnIndexes)`
`int` `executeUpdate(String sql, String[] columnNames)`
`CloudSpannerConnection` `getConnection()`
`protected com.google.cloud.spanner.DatabaseClient` `getDbClient()`
`ResultSet` `getGeneratedKeys()`
`int` `getMaxFieldSize()`
`int` `getMaxRows()`
`boolean` `getMoreResults()`
`boolean` `getMoreResults(int current)`
`int` `getQueryTimeout()`
`protected com.google.cloud.spanner.ReadContext` `getReadContext()`
`ResultSet` `getResultSet()`
`int` `getResultSetConcurrency()`
`int` `getResultSetHoldability()`
`int` `getResultSetType()`
`int` `getUpdateCount()`
`SQLWarning` `getWarnings()`
`boolean` `isClosed()`
`boolean` `isCloseOnCompletion()`
`protected boolean` `isDDLStatement(String sql)` Do a quick check if this SQL statement is a DDL statement
`boolean` `isForceSingleUseReadContext()`
`boolean` `isPoolable()`
`protected boolean` `isSelectStatement(String sql)`
`protected String` `quoteIdentifier(String identifier)`
`protected String` `sanitizeSQL(String sql)`
`void` `setCursorName(String name)`
`void` `setEscapeProcessing(boolean enable)`
`void` `setForceSingleUseReadContext(boolean forceSingleUseReadContext)`
`void` `setMaxFieldSize(int max)`
`void` `setMaxRows(int max)`
`void` `setPoolable(boolean poolable)`
`void` `setQueryTimeout(int seconds)`
`protected long` `writeMutations(nl.topicus.jdbc.statement.Mutations mutations)`

### Methods inherited from class nl.topicus.jdbc.AbstractCloudSpannerFetcher

`getFetchDirection, getFetchSize, setFetchDirection, setFetchSize`

### Methods inherited from class nl.topicus.jdbc.metadata.AbstractCloudSpannerWrapper

`extractColumnType, getClassName, getGoogleTypeName, isWrapperFor, unwrap`

### Methods inherited from class java.lang.Object

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

### Methods inherited from interface java.sql.Statement

`executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, getFetchDirection, getFetchSize, getLargeMaxRows, getLargeUpdateCount, setFetchDirection, setFetchSize, setLargeMaxRows`

### Methods inherited from interface java.sql.Wrapper

`isWrapperFor, unwrap`

### Field Detail

#### lastResultSet

    protected ResultSet lastResultSet

#### lastUpdateCount

    protected int lastUpdateCount

### Constructor Detail

#### CloudSpannerStatement

    public CloudSpannerStatement(CloudSpannerConnection connection,
                                 com.google.cloud.spanner.DatabaseClient dbClient)

### Method Detail

#### executeQuery

    public ResultSet executeQuery(String sql)
                           throws SQLException

Throws:
  `SQLException`

#### executeUpdate

    public int executeUpdate(String sql)
                      throws SQLException

Throws:
  `SQLException`

#### execute

    public boolean execute(String sql)
                    throws SQLException

Throws:
  `SQLException`

#### isDDLStatement

    protected boolean isDDLStatement(String sql)

Do a quick check if this SQL statement is a DDL statement

Parameters:
  `sql` - The statement to check
Returns:
  true if the SQL statement is a DDL statement

#### isSelectStatement

    protected boolean isSelectStatement(String sql)

#### getResultSet

    public ResultSet getResultSet()
                           throws SQLException

Throws:
  `SQLException`

#### getUpdateCount

    public int getUpdateCount()
                       throws SQLException

Throws:
  `SQLException`

#### getMoreResults

    public boolean getMoreResults()
                           throws SQLException

Throws:
  `SQLException`

#### getMoreResults

    public boolean getMoreResults(int current)
                           throws SQLException

Throws:
  `SQLException`

#### executeUpdate

    public int executeUpdate(String sql,
                             int autoGeneratedKeys)
                      throws SQLException

Throws:
  `SQLException`

#### executeUpdate

    public int executeUpdate(String sql,
                             int[] columnIndexes)
                      throws SQLException

Throws:
  `SQLException`

#### executeUpdate

    public int executeUpdate(String sql,
                             String[] columnNames)
                      throws SQLException

Throws:
  `SQLException`

#### execute

    public boolean execute(String sql,
                           int autoGeneratedKeys)
                    throws SQLException

Throws:
  `SQLException`

#### execute

    public boolean execute(String sql,
                           int[] columnIndexes)
                    throws SQLException

Throws:
  `SQLException`

#### execute

    public boolean execute(String sql,
                           String[] columnNames)
                    throws SQLException

Throws:
  `SQLException`

#### sanitizeSQL

    protected String sanitizeSQL(String sql)

#### createInsertSelectOnDuplicateKeyUpdateStatement

    protected String createInsertSelectOnDuplicateKeyUpdateStatement(net.sf.jsqlparser.statement.update.Update update)
                                                              throws SQLException

Transform the given UPDATE-statement into an "INSERT INTO TAB1 (...) SELECT ... FROM TAB1 WHERE ... ON DUPLICATE KEY UPDATE"

Parameters:
  `update` - The UPDATE-statement
Returns:
  An SQL-statement equal to the UPDATE-statement but in INSERT form
Throws:
  `SQLException` - if a database exception occurs while getting the table meta data or if the statement tries to update the primary key value

#### quoteIdentifier

    protected String quoteIdentifier(String identifier)

#### getDbClient

    protected com.google.cloud.spanner.DatabaseClient getDbClient()

#### isForceSingleUseReadContext

    public boolean isForceSingleUseReadContext()

#### setForceSingleUseReadContext

    public void setForceSingleUseReadContext(boolean forceSingleUseReadContext)

#### getReadContext

    protected com.google.cloud.spanner.ReadContext getReadContext()
                                                           throws SQLException

Throws:
  `SQLException`

#### writeMutations

    protected long writeMutations(nl.topicus.jdbc.statement.Mutations mutations)
                           throws SQLException

Throws:
  `SQLException`

#### isClosed

    public boolean isClosed()
                     throws SQLException

Specified by:
  `isClosed` in interface `Statement`
Throws:
  `SQLException`

#### close

    public void close()
               throws SQLException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Statement`
Throws:
  `SQLException`

#### checkClosed

    protected void checkClosed()
                        throws SQLException

Throws:
  `SQLException`

#### getMaxFieldSize

    public int getMaxFieldSize()
                        throws SQLException

Specified by:
  `getMaxFieldSize` in interface `Statement`
Throws:
  `SQLException`

#### setMaxFieldSize

    public void setMaxFieldSize(int max)
                         throws SQLException

Specified by:
  `setMaxFieldSize` in interface `Statement`
Throws:
  `SQLException`

#### getMaxRows

    public int getMaxRows()
                   throws SQLException

Specified by:
  `getMaxRows` in interface `Statement`
Throws:
  `SQLException`

#### setMaxRows

    public void setMaxRows(int max)
                    throws SQLException

Specified by:
  `setMaxRows` in interface `Statement`
Throws:
  `SQLException`

#### setEscapeProcessing

    public void setEscapeProcessing(boolean enable)
                             throws SQLException

Specified by:
  `setEscapeProcessing` in interface `Statement`
Throws:
  `SQLException`

#### getQueryTimeout

    public int getQueryTimeout()
                        throws SQLException

Specified by:
  `getQueryTimeout` in interface `Statement`
Throws:
  `SQLException`

#### setQueryTimeout

    public void setQueryTimeout(int seconds)
                         throws SQLException

Specified by:
  `setQueryTimeout` in interface `Statement`
Throws:
  `SQLException`

#### cancel

    public void cancel()
                throws SQLException

Specified by:
  `cancel` in interface `Statement`
Throws:
  `SQLException`

#### getWarnings

    public SQLWarning getWarnings()
                           throws SQLException

Specified by:
  `getWarnings` in interface `Statement`
Throws:
  `SQLException`

#### clearWarnings

    public void clearWarnings()
                       throws SQLException

Specified by:
  `clearWarnings` in interface `Statement`
Throws:
  `SQLException`

#### setCursorName

    public void setCursorName(String name)
                       throws SQLException

Specified by:
  `setCursorName` in interface `Statement`
Throws:
  `SQLException`

#### getResultSetConcurrency

    public int getResultSetConcurrency()
                                throws SQLException

Specified by:
  `getResultSetConcurrency` in interface `Statement`
Throws:
  `SQLException`

#### getResultSetType

    public int getResultSetType()
                         throws SQLException

Specified by:
  `getResultSetType` in interface `Statement`
Throws:
  `SQLException`

#### addBatch

    public void addBatch(String sql)
                  throws SQLException

Specified by:
  `addBatch` in interface `Statement`
Throws:
  `SQLException`

#### clearBatch

    public void clearBatch()
                    throws SQLException

Specified by:
  `clearBatch` in interface `Statement`
Throws:
  `SQLException`

#### executeBatch

    public int[] executeBatch()
                       throws SQLException

Specified by:
  `executeBatch` in interface `Statement`
Throws:
  `SQLException`

#### getConnection

    public CloudSpannerConnection getConnection()
                                         throws SQLException

Specified by:
  `getConnection` in interface `Statement`
Throws:
  `SQLException`

#### getGeneratedKeys

    public ResultSet getGeneratedKeys()
                               throws SQLException

Specified by:
  `getGeneratedKeys` in interface `Statement`
Throws:
  `SQLException`

#### getResultSetHoldability

    public int getResultSetHoldability()
                                throws SQLException

Specified by:
  `getResultSetHoldability` in interface `Statement`
Throws:
  `SQLException`

#### setPoolable

    public void setPoolable(boolean poolable)
                     throws SQLException

Specified by:
  `setPoolable` in interface `Statement`
Throws:
  `SQLException`

#### isPoolable

    public boolean isPoolable()
                       throws SQLException

Specified by:
  `isPoolable` in interface `Statement`
Throws:
  `SQLException`

#### closeOnCompletion

    public void closeOnCompletion()
                           throws SQLException

Specified by:
  `closeOnCompletion` in interface `Statement`
Throws:
  `SQLException`

#### isCloseOnCompletion

    public boolean isCloseOnCompletion()
                                throws SQLException

Specified by:
  `isCloseOnCompletion` in interface `Statement`
Throws:
  `SQLException`