Package org.sqlite.core
Class CoreStatement
- java.lang.Object
-
- org.sqlite.core.CoreStatement
-
- All Implemented Interfaces:
Codes
- Direct Known Subclasses:
JDBC3Statement
public abstract class CoreStatement extends java.lang.Object implements Codes
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.Object[]
batch
protected int
batchPos
SQLiteConnection
conn
private java.sql.ResultSet
generatedKeysRs
private java.sql.Statement
generatedKeysStat
private static java.util.regex.Pattern
INSERT_PATTERN
SafeStmtPtr
pointer
protected boolean
resultsWaiting
protected CoreResultSet
rs
protected java.lang.String
sql
-
Fields inherited from interface org.sqlite.core.Codes
SQLITE_ABORT, SQLITE_AUTH, SQLITE_BLOB, SQLITE_BUSY, SQLITE_CANTOPEN, SQLITE_CONSTRAINT, SQLITE_CORRUPT, SQLITE_DONE, SQLITE_EMPTY, SQLITE_ERROR, SQLITE_FLOAT, SQLITE_FULL, SQLITE_INTEGER, SQLITE_INTERNAL, SQLITE_INTERRUPT, SQLITE_IOERR, SQLITE_LOCKED, SQLITE_MISMATCH, SQLITE_MISUSE, SQLITE_NOLFS, SQLITE_NOMEM, SQLITE_NOTFOUND, SQLITE_NULL, SQLITE_OK, SQLITE_PERM, SQLITE_PROTOCOL, SQLITE_READONLY, SQLITE_ROW, SQLITE_SCHEMA, SQLITE_TEXT, SQLITE_TOOBIG
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
CoreStatement(SQLiteConnection c)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
checkIndex(int index)
protected void
checkOpen()
protected void
clearGeneratedKeys()
protected boolean
exec()
Calls sqlite3_step() and sets up results.protected boolean
exec(java.lang.String sql)
Executes SQL statement and throws SQLExceptions if the given SQL statement is null or no database is open.abstract java.sql.ResultSet
executeQuery(java.lang.String sql, boolean closeStmt)
SQLiteConnectionConfig
getConnectionConfig()
DB
getDatabase()
java.sql.ResultSet
getGeneratedKeys()
This implementation uses SQLite's last_insert_rowid function to obtain the row ID.protected void
internalClose()
(package private) boolean
isOpen()
protected void
notifyFirstStatementExecuted()
void
updateGeneratedKeys()
SQLite's last_insert_rowid() function is DB-specific.
-
-
-
Field Detail
-
conn
public final SQLiteConnection conn
-
rs
protected final CoreResultSet rs
-
pointer
public SafeStmtPtr pointer
-
sql
protected java.lang.String sql
-
batchPos
protected int batchPos
-
batch
protected java.lang.Object[] batch
-
resultsWaiting
protected boolean resultsWaiting
-
generatedKeysStat
private java.sql.Statement generatedKeysStat
-
generatedKeysRs
private java.sql.ResultSet generatedKeysRs
-
INSERT_PATTERN
private static final java.util.regex.Pattern INSERT_PATTERN
-
-
Constructor Detail
-
CoreStatement
protected CoreStatement(SQLiteConnection c)
-
-
Method Detail
-
getDatabase
public DB getDatabase()
-
getConnectionConfig
public SQLiteConnectionConfig getConnectionConfig()
-
checkOpen
protected final void checkOpen() throws java.sql.SQLException
- Throws:
java.sql.SQLException
- If the database is not opened.
-
isOpen
boolean isOpen() throws java.sql.SQLException
- Returns:
- True if the database is opened; false otherwise.
- Throws:
java.sql.SQLException
-
exec
protected boolean exec() throws java.sql.SQLException
Calls sqlite3_step() and sets up results. Expects a clean stmt.- Returns:
- True if the ResultSet has at least one row; false otherwise.
- Throws:
java.sql.SQLException
- If the given SQL statement is null or no database is open.
-
exec
protected boolean exec(java.lang.String sql) throws java.sql.SQLException
Executes SQL statement and throws SQLExceptions if the given SQL statement is null or no database is open.- Parameters:
sql
- SQL statement.- Returns:
- True if the ResultSet has at least one row; false otherwise.
- Throws:
java.sql.SQLException
- If the given SQL statement is null or no database is open.
-
internalClose
protected void internalClose() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
notifyFirstStatementExecuted
protected void notifyFirstStatementExecuted()
-
executeQuery
public abstract java.sql.ResultSet executeQuery(java.lang.String sql, boolean closeStmt) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
checkIndex
protected void checkIndex(int index) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
clearGeneratedKeys
protected void clearGeneratedKeys() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
updateGeneratedKeys
public void updateGeneratedKeys() throws java.sql.SQLException
SQLite's last_insert_rowid() function is DB-specific. However, in this implementation we ensure the Generated Key result set is statement-specific by executing the query immediately after an insert operation is performed. The caller is simply responsible for calling updateGeneratedKeys on the statement object right after execute in a synchronized(connection) block.- Throws:
java.sql.SQLException
-
getGeneratedKeys
public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException
This implementation uses SQLite's last_insert_rowid function to obtain the row ID. It cannot provide multiple values when inserting multiple rows. Suggestion is to use a RETURNING clause instead.- Throws:
java.sql.SQLException
- See Also:
Statement.getGeneratedKeys()
-
-