-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Parent: #100
Is your feature request related to a problem? Please describe
Yes, for issue #100, support JDBC database operations.
Describe the solution you'd like
The generated analysis.json
must be able to capture JDBC including operations using Connection
, Statement
, PreparedStatement
, and ResultSet
.
1. If the callsite ReceiverType is Statement
, PreparedStatement
, and CallableStatement
We want to look for the following methods:
Class | Method | Description | CRUD Operation |
---|---|---|---|
Statement |
addBatch(String sql) |
Adds an SQL command to batch. | ANY (C/U/D) |
execute(String sql) |
Executes an SQL statement that may return multiple results. | ANY (C/R/U/D) | |
executeBatch() |
Executes a batch of SQL commands. | ANY (C/U/D) | |
executeLargeBatch() |
Executes a large batch of SQL commands. | ANY (C/U/D) | |
executeLargeUpdate(String sql) |
Executes INSERT , UPDATE , DELETE , or DDL statements. |
C/U/D | |
executeQuery(String sql) |
Executes a SELECT query and returns a ResultSet. |
READ | |
executeUpdate(String sql) |
Executes INSERT , UPDATE , DELETE , or DDL statements. |
C/U/D | |
getResultSet() |
Retrieves the current ResultSet. | READ | |
getGeneratedKeys() |
Retrieves auto-generated keys from an INSERT operation. |
READ (post-C) | |
getUpdateCount() |
Returns the number of rows affected by an UPDATE , INSERT , or DELETE . |
READ (post-U/D) | |
PreparedStatement |
addBatch() | Adds the current parameters to the batch of commands. | ANY (C/U/D) |
execute() |
Executes any SQL statement. | ANY (C/R/U/D) | |
executeLargeUpdate() |
Executes INSERT , UPDATE , DELETE , or DDL statements. |
C/U/D | |
executeQuery() |
Executes a SELECT query and returns a ResultSet. |
READ | |
executeUpdate() |
Executes INSERT , UPDATE , or DELETE statements. |
C/U/D | |
getMetaData() |
Retrieves metadata about the ResultSet. | READ | |
getParameterMetaData() |
Retrieves metadata about parameters. | READ | |
CallableStatement |
execute() | Executes a stored procedure. | ANY (C/R/U/D) |
executeQuery() |
Executes a stored procedure that returns a ResultSet. | READ | |
executeUpdate() |
Executes a stored procedure that performs INSERT , UPDATE , or DELETE . |
C/U/D | |
getXxx(int parameterIndex) |
Retrieves output parameters from the stored procedure (e.g., getInt , getString ). |
READ | |
registerOutParameter(...) |
Registers output parameters for stored procedures. | Setup (not CRUD) | |
setXxx(...) |
Sets parameters for the SQL command (e.g., setString, setInt). | Setup (not CRUD) |
2. CONNECTION
and TRANSACTIONAL
Class | Method | Description | CRUD Operation | Transactional Operation |
---|---|---|---|---|
Connection | abort(Executor executor) | Terminates an open connection. | None | Abort |
clearWarnings() | Clears all warnings for this Connection object. | None | None | |
close() | Closes the connection and releases JDBC resources. | None | End Connection | |
commit() | Commits the current transaction, making all changes permanent. | Commit (Post-C/U/D) | Commit | |
createArrayOf(String typeName, Object[] elements) | Creates an Array object. | CREATE | None | |
createBlob() | Creates a Blob object. | CREATE | None | |
createClob() | Creates a Clob object. | CREATE | None | |
createNClob() | Creates an NClob object. | CREATE | None | |
createSQLXML() | Creates an SQLXML object. | CREATE | None | |
createStatement() | Creates a Statement object for executing SQL. | None (Setup) | None | |
createStatement(int, int) | Creates a Statement with specified ResultSet type and concurrency. | None (Setup) | None | |
createStatement(int, int, int) | Creates a Statement with specified type, concurrency, and holdability. | None (Setup) | None | |
createStruct(String typeName, Object[] attributes) | Creates a Struct object. | CREATE | None | |
getAutoCommit() | Retrieves the current auto-commit mode. | None | Transaction Mode Inquiry | |
getCatalog() | Retrieves the current catalog name. | None | None | |
getClientInfo() | Retrieves client info properties. | None | None | |
getClientInfo(String name) | Retrieves a specific client info property. | None | None | |
getHoldability() | Retrieves the current ResultSet holdability. | None | None | |
getMetaData() | Retrieves database metadata. | READ | None | |
getNetworkTimeout() | Retrieves the network timeout setting. | None | None | |
getSchema() | Retrieves the current schema. | None | None | |
getTransactionIsolation() | Retrieves the transaction isolation level. | None | Transaction Mode Inquiry | |
getTypeMap() | Retrieves the type map for this connection. | None | None | |
getWarnings() | Retrieves the first warning reported on this Connection. | None | None | |
isClosed() | Checks if the connection is closed. | None | Connection Status Inquiry | |
isReadOnly() | Checks if the connection is in read-only mode. | None | Transaction Mode Inquiry | |
isValid(int timeout) | Checks if the connection is valid. | None | Connection Status Inquiry | |
nativeSQL(String sql) | Converts SQL to the system's native SQL grammar. | None | None | |
prepareCall(String sql) | Prepares a callable statement for stored procedures. | None (Setup) | None | |
prepareCall(String sql, int, int) | Prepares a callable statement with specified ResultSet type and concurrency. | None (Setup) | None | |
prepareCall(String sql, int, int, int) | Prepares a callable statement with specified type, concurrency, and holdability. | None (Setup) | None | |
prepareStatement(String sql) | Prepares a parameterized SQL statement. | None (Setup) | None | |
prepareStatement(String sql, int autoGeneratedKeys) | Prepares a statement capable of returning auto-generated keys. | None (Setup) | None | |
prepareStatement(String sql, int[] columnIndexes) | Prepares a statement capable of returning specified columns' auto-generated keys. | None (Setup) | None | |
prepareStatement(String sql, int, int) | Prepares a statement with specified ResultSet type and concurrency. | None (Setup) | None | |
prepareStatement(String sql, int, int, int) | Prepares a statement with specified type, concurrency, and holdability. | None (Setup) | None | |
prepareStatement(String sql, String[] columnNames) | Prepares a statement capable of returning specified columns' auto-generated keys. | None (Setup) | None | |
releaseSavepoint(Savepoint savepoint) | Releases a specified savepoint. | None | Savepoint Management | |
rollback() | Rolls back all changes made in the current transaction. | Rollback (Undo C/U/D) | Rollback | |
rollback(Savepoint savepoint) | Rolls back changes to the specified savepoint. | Rollback (Undo C/U/D) | Rollback (to Savepoint) | |
setAutoCommit(boolean autoCommit) | Sets the auto-commit mode. | None | Transaction Mode Setting | |
setCatalog(String catalog) | Sets the catalog name for the connection. | None | None | |
setClientInfo(Properties properties) | Sets client info properties. | None | None | |
setClientInfo(String name, String value) | Sets a specific client info property. | None | None | |
setHoldability(int holdability) | Sets the default holdability for ResultSet objects. | None | None | |
setNetworkTimeout(Executor executor, int ms) | Sets the maximum period to wait for a database response. | None | None | |
setReadOnly(boolean readOnly) | Puts the connection in read-only mode. | None | Transaction Mode Setting | |
setSavepoint() | Creates an unnamed savepoint in the current transaction. | None (Setup) | Savepoint Management | |
setSavepoint(String name) | Creates a named savepoint in the current transaction. | None (Setup) | Savepoint Management | |
setSchema(String schema) | Sets the current schema name. | None | None | |
setTransactionIsolation(int level) | Sets the transaction isolation level. | None | Transaction Mode Setting | |
setTypeMap(Map<String, Class<?>> map) | Sets the type map for custom mapping of SQL types to Java objects. | None | None |
3. ResultSet
Class | Method | Description | CRUD Operation | Transactional Operation |
---|---|---|---|---|
ResultSet | next() | Moves the cursor forward one row from its current position. | READ | Cursor Movement |
previous() | Moves the cursor to the previous row. | READ | Cursor Movement | |
first() | Moves the cursor to the first row. | READ | Cursor Movement | |
last() | Moves the cursor to the last row. | READ | Cursor Movement | |
absolute(int row) | Moves the cursor to the specified row number. | READ | Cursor Movement | |
relative(int rows) | Moves the cursor relative to its current position. | READ | Cursor Movement | |
beforeFirst() | Positions the cursor before the first row. | READ | Cursor Movement | |
afterLast() | Positions the cursor after the last row. | READ | Cursor Movement | |
getXxx(int columnIndex) | Retrieves the value of the specified column (e.g., getString, getInt). | READ | ||
getXxx(String columnLabel) | Retrieves the value of the specified column by name. | READ | ||
updateXxx(int columnIndex, value) | Updates the specified column in the current row with the given value. | UPDATE | ||
updateXxx(String columnLabel, value) | Updates the specified column by name in the current row with the given value. | UPDATE | ||
updateRow() | Updates the current row in the database. | UPDATE | ||
deleteRow() | Deletes the current row from the database. | DELETE | ||
insertRow() | Inserts the current row into the database. | CREATE | ||
moveToInsertRow() | Moves the cursor to the insert row for adding a new row. | CREATE | Cursor Movement (Insert Mode) | |
moveToCurrentRow() | Moves the cursor back to the current row from the insert row. | READ | Cursor Movement | |
cancelRowUpdates() | Cancels updates made to the current row. | Rollback (Row Level) | ||
refreshRow() | Refreshes the current row with the latest data from the database. | READ/UPDATE | ||
rowInserted() | Checks if the current row has been inserted. | READ | ||
rowUpdated() | Checks if the current row has been updated. | READ | ||
rowDeleted() | Checks if the current row has been deleted. | READ | ||
isBeforeFirst() | Checks if the cursor is before the first row. | READ | Cursor State Inquiry | |
isAfterLast() | Checks if the cursor is after the last row. | READ | Cursor State Inquiry | |
isFirst() | Checks if the cursor is on the first row. | READ | Cursor State Inquiry | |
isLast() | Checks if the cursor is on the last row. | READ | Cursor State Inquiry | |
getRow() | Retrieves the current row number. | READ | Cursor State Inquiry |
4. CachedRowSet
, FilteredRowSet
, JdbcRowSet
, JoinRowSet
, RowSet
, SyncResolver
, WebRowSet
Class | Method |
Description | CRUD Operation | Transactional Operation |
---|---|---|---|---|
RowSet |
execute() |
Populates the RowSet with data. |
READ | |
CachedRowSet |
acceptChanges() |
Accepts changes made to the RowSet and commits them to the database. |
UPDATE/CREATE/DELETE | Commit (Row Level) |
restoreOriginal() |
Reverts the RowSet to its original state before modifications. |
Rollback | Rollback (Row Level) | |
FilteredRowSet |
setFilter(Predicate predicate) |
Applies a filter to the rows in the RowSet . |
READ | |
JoinRowSet |
addRowSet(RowSet rowset) |
Adds a RowSet to be joined. |
READ | |
setJoinType(int joinType) |
Specifies the type of SQL join (e.g., INNER JOIN , LEFT JOIN ). |
READ | ||
SyncResolver |
getConflictValue(int columnIndex) |
Retrieves the value causing a conflict during synchronization. | READ | Conflict Resolution |
setResolvedValue(int columnIndex, Object value) |
Resolves a conflict by setting a new value for the conflicting column. | UPDATE | Conflict Resolution | |
WebRowSet |
writeXml(Writer writer) |
Writes the WebRowSet data to XML format. |
READ | |
readXml(Reader reader) |
Reads XML data into the WebRowSet . |
READ |
Describe alternatives you've considered
Same as #100
Additional context
- Use Daytrader8 to test.
- Other contexts are the same as Extend Codeanalyzer to Capture Database Entries #100
- May need to create new Entity classes and Enums for Transactions as below:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TransactionOperation {
private int lineNumber = -1;
private TransactionOperationType operationType;
@NotImplemented
private String savepointName;
@NotImplemented
private String transactionIsolationLevel;
@NotImplemented
private boolean autoCommitEnabled;
}
package com.ibm.cldk.javaee.utils.enums;
public enum TransactionOperationType {
COMMIT,
ROLLBACK,
SAVEPOINT,
SET_AUTOCOMMIT,
SET_ISOLATION_LEVEL,
ABORT,
OTHER;
}
References
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request