org.h2.command
Class Prepared

java.lang.Object
  extended by org.h2.command.Prepared
Direct Known Subclasses:
BackupCommand, Call, DefineCommand, Delete, ExecuteProcedure, Explain, Insert, Merge, NoOperation, Query, RunScriptCommand, ScriptCommand, Set, TransactionCommand, Update

public abstract class Prepared
extends java.lang.Object

A prepared statement.


Field Summary
protected  boolean create
          Whether to create a new object (for indexes).
protected  java.util.ArrayList<Parameter> parameters
          The list of parameters.
protected  boolean prepareAlways
          If the query should be prepared before each execution.
protected  Session session
          The session.
protected  java.lang.String sqlStatement
          The SQL string.
 
Constructor Summary
Prepared(Session session)
          Create a new object.
 
Method Summary
 void checkCanceled()
          Check if this statement was canceled.
protected  void checkParameters()
          Check if all parameters have been set.
protected  int getCurrentObjectId()
          Get the object id to use for the database object that is created in this statement.
 int getCurrentRowNumber()
          Get the current row number.
protected  int getObjectId()
          Get the current object id, or get a new id from the database.
 java.util.ArrayList<Parameter> getParameters()
          Get the parameter list.
 java.lang.String getPlanSQL()
          Get the SQL statement with the execution plan.
 java.lang.String getSQL()
          Get the SQL statement.
protected static java.lang.String getSQL(Expression[] list)
          Get the SQL snippet of the expression list.
protected static java.lang.String getSQL(Value[] values)
          Get the SQL snippet of the value list.
abstract  int getType()
          Get the command type as defined in CommandInterface
 boolean isCacheable()
           
 boolean isQuery()
          Check if this object is a query.
 boolean isReadOnly()
          Check if this command is read only.
abstract  boolean isTransactional()
          Check if this command is transactional.
 boolean needRecompile()
          Check if the statement needs to be re-compiled.
 void prepare()
          Prepare this statement.
 ResultInterface query(int maxrows)
          Execute the query.
abstract  ResultInterface queryMeta()
          Get an empty result set containing the meta data.
 void setCommand(Command command)
          Set the command.
protected  void setCurrentRowNumber(int rowNumber)
          Set the current row number.
 void setObjectId(int i)
          Set the object id for this statement.
 void setParameterList(java.util.ArrayList<Parameter> parameters)
          Set the parameter list of this statement.
 void setPrepareAlways(boolean prepareAlways)
          Set the prepare always flag.
protected  DbException setRow(DbException e, int rowId, java.lang.String values)
          Set the SQL statement of the exception to the given row.
 void setSession(Session currentSession)
          Set the session for this statement.
 void setSQL(java.lang.String sql)
          Set the SQL statement.
 java.lang.String toString()
          Convert the statement to a String.
 int update()
          Execute the statement.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

session

protected Session session
The session.


sqlStatement

protected java.lang.String sqlStatement
The SQL string.


create

protected boolean create
Whether to create a new object (for indexes).


parameters

protected java.util.ArrayList<Parameter> parameters
The list of parameters.


prepareAlways

protected boolean prepareAlways
If the query should be prepared before each execution. This is set for queries with LIKE ?, because the query plan depends on the parameter value.

Constructor Detail

Prepared

public Prepared(Session session)
Create a new object.

Parameters:
session - the session
Method Detail

isTransactional

public abstract boolean isTransactional()
Check if this command is transactional. If it is not, then it forces the current transaction to commit.

Returns:
true if it is

queryMeta

public abstract ResultInterface queryMeta()
Get an empty result set containing the meta data.

Returns:
the result set

getType

public abstract int getType()
Get the command type as defined in CommandInterface

Returns:
the statement type

isReadOnly

public boolean isReadOnly()
Check if this command is read only.

Returns:
true if it is

needRecompile

public boolean needRecompile()
Check if the statement needs to be re-compiled.

Returns:
true if it must

setParameterList

public void setParameterList(java.util.ArrayList<Parameter> parameters)
Set the parameter list of this statement.

Parameters:
parameters - the parameter list

getParameters

public java.util.ArrayList<Parameter> getParameters()
Get the parameter list.

Returns:
the parameter list

checkParameters

protected void checkParameters()
Check if all parameters have been set.

Throws:
SQLException - if any parameter has not been set

setCommand

public void setCommand(Command command)
Set the command.

Parameters:
command - the new command

isQuery

public boolean isQuery()
Check if this object is a query.

Returns:
true if it is

prepare

public void prepare()
Prepare this statement.

Throws:
SQLException

update

public int update()
Execute the statement.

Returns:
the update count
Throws:
SQLException - if it is a query

query

public ResultInterface query(int maxrows)
Execute the query.

Parameters:
maxrows - the maximum number of rows to return
Returns:
the result set
Throws:
SQLException - if it is not a query

setSQL

public void setSQL(java.lang.String sql)
Set the SQL statement.

Parameters:
sql - the SQL statement

getSQL

public java.lang.String getSQL()
Get the SQL statement.

Returns:
the SQL statement

getCurrentObjectId

protected int getCurrentObjectId()
Get the object id to use for the database object that is created in this statement. This id is only set when the object is persistent. If not set, this method returns 0.

Returns:
the object id or 0 if not set

getObjectId

protected int getObjectId()
Get the current object id, or get a new id from the database. The object id is used when creating new database object (CREATE statement).

Returns:
the object id

getPlanSQL

public java.lang.String getPlanSQL()
Get the SQL statement with the execution plan.

Returns:
the execution plan

checkCanceled

public void checkCanceled()
Check if this statement was canceled.

Throws:
SQLException - if it was canceled

setObjectId

public void setObjectId(int i)
Set the object id for this statement.

Parameters:
i - the object id

setSession

public void setSession(Session currentSession)
Set the session for this statement.

Parameters:
currentSession - the new session

setPrepareAlways

public void setPrepareAlways(boolean prepareAlways)
Set the prepare always flag. If set, the statement is re-compiled whenever it is executed.

Parameters:
prepareAlways - the new value

setCurrentRowNumber

protected void setCurrentRowNumber(int rowNumber)
Set the current row number.

Parameters:
rowNumber - the row number

getCurrentRowNumber

public int getCurrentRowNumber()
Get the current row number.

Returns:
the row number

toString

public java.lang.String toString()
Convert the statement to a String.

Overrides:
toString in class java.lang.Object
Returns:
the SQL statement

getSQL

protected static java.lang.String getSQL(Value[] values)
Get the SQL snippet of the value list.

Parameters:
values - the value list
Returns:
the SQL snippet

getSQL

protected static java.lang.String getSQL(Expression[] list)
Get the SQL snippet of the expression list.

Parameters:
list - the expression list
Returns:
the SQL snippet

setRow

protected DbException setRow(DbException e,
                             int rowId,
                             java.lang.String values)
Set the SQL statement of the exception to the given row.

Parameters:
e - the exception
rowId - the row number
values - the values of the row
Returns:
the exception

isCacheable

public boolean isCacheable()