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[]batchprotected intbatchPosSQLiteConnectionconnprivate java.sql.ResultSetgeneratedKeysRsprivate java.sql.StatementgeneratedKeysStatprivate static java.util.regex.PatternINSERT_PATTERNSafeStmtPtrpointerprotected booleanresultsWaitingprotected CoreResultSetrsprotected java.lang.Stringsql-
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 protectedCoreStatement(SQLiteConnection c)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidcheckIndex(int index)protected voidcheckOpen()protected voidclearGeneratedKeys()protected booleanexec()Calls sqlite3_step() and sets up results.protected booleanexec(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.ResultSetexecuteQuery(java.lang.String sql, boolean closeStmt)SQLiteConnectionConfiggetConnectionConfig()DBgetDatabase()java.sql.ResultSetgetGeneratedKeys()This implementation uses SQLite's last_insert_rowid function to obtain the row ID.protected voidinternalClose()(package private) booleanisOpen()protected voidnotifyFirstStatementExecuted()voidupdateGeneratedKeys()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.SQLExceptionCalls 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.SQLExceptionExecutes 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.SQLExceptionSQLite'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.SQLExceptionThis 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()
-
-