Java Code Examples for net.sf.jsqlparser.statement.insert.Insert#getColumns()
The following examples show how to use
net.sf.jsqlparser.statement.insert.Insert#getColumns() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TxcSqlExecuteInterceptor.java From tx-lcn with Apache License 2.0 | 6 votes |
@Override public void postInsert(StatementInformation statementInformation) throws SQLException { Connection connection = (Connection) DTXLocalContext.cur().getResource(); Insert insert = (Insert) statementInformation.getAttachment(); TableStruct tableStruct = globalContext.tableStruct(insert.getTable().getName(), () -> tableStructAnalyser.analyse(connection, insert.getTable().getName())); // 非自增主键值 PrimaryKeyListVisitor primaryKeyListVisitor = new PrimaryKeyListVisitor(insert.getTable(), insert.getColumns(), tableStruct.getFullyQualifiedPrimaryKeys()); insert.getItemsList().accept(primaryKeyListVisitor); try { InsertImageParams insertImageParams = new InsertImageParams(); insertImageParams.setTableName(tableStruct.getTableName()); insertImageParams.setStatement(statementInformation.getStatement()); insertImageParams.setFullyQualifiedPrimaryKeys(tableStruct.getFullyQualifiedPrimaryKeys()); insertImageParams.setPrimaryKeyValuesList(primaryKeyListVisitor.getPrimaryKeyValuesList()); txcService.resolveInsertImage(insertImageParams); } catch (TxcLogicException e) { throw new SQLException(e); } }
Example 2
Source File: JSQLParserAdapter.java From ddal with Apache License 2.0 | 6 votes |
@Override public void visit(Insert insert) { this.getStack().push(new FrameContext(StatementType.INSERT)); visit0(insert); // route table List<Column> columns = insert.getColumns(); if (columns != null) { ItemsList itemsList = insert.getItemsList(); if (itemsList instanceof ExpressionList) { procInsertColumns(columns, (ExpressionList) itemsList); } else if (itemsList instanceof MultiExpressionList) { for (ExpressionList expressionList : ((MultiExpressionList) itemsList).getExprList()) { procInsertColumns(columns, expressionList); } } else { throw new UnsupportedSQLExpressionException(insert.toString()); } } afterVisitBaseStatement(); }
Example 3
Source File: CRUDParseUtils.java From WeBASE-Front with Apache License 2.0 | 4 votes |
public static boolean parseInsert(String sql, Table table, Entry entry) throws JSQLParserException, FrontException { Statement statement = CCJSqlParserUtil.parse(sql); Insert insert = (Insert) statement; if (insert.getSelect() != null) { throw new FrontException(PrecompiledUtils.CRUD_SQL_ERROR, "The insert select clause is not supported."); } // parse table name String tableName = insert.getTable().getName(); table.setTableName(tableName); // parse columns List<Column> columns = insert.getColumns(); ItemsList itemsList = insert.getItemsList(); String items = itemsList.toString(); String[] rawItem = items.substring(1, items.length() - 1).split(","); String[] itemArr = new String[rawItem.length]; for (int i = 0; i < rawItem.length; i++) { itemArr[i] = rawItem[i].trim(); } if (columns != null) { if (columns.size() != itemArr.length) { throw new FrontException(PrecompiledUtils.CRUD_SQL_ERROR, "Column count doesn't match value count."); } List<String> columnNames = new ArrayList<>(); for (Column column : columns) { String columnName = trimQuotes(column.toString()); if (columnNames.contains(columnName)) { throw new FrontException(PrecompiledUtils.CRUD_SQL_ERROR, "Please provide the field '" + columnName + "' only once."); } else { columnNames.add(columnName); } } for (int i = 0; i < columnNames.size(); i++) { entry.put(columnNames.get(i), trimQuotes(itemArr[i])); } return false; } else { for (int i = 0; i < itemArr.length; i++) { entry.put(i + "", trimQuotes(itemArr[i])); } return true; } }
Example 4
Source File: CloudSpannerPreparedStatement.java From spanner-jdbc with MIT License | 4 votes |
private Mutation createInsertMutation(Insert insert, boolean generateParameterMetaData) throws SQLException { ItemsList items = insert.getItemsList(); if (generateParameterMetaData && items == null && insert.getSelect() != null) { // Just initialize the parameter meta data of the select statement createSelectBuilder(insert.getSelect(), insert.getSelect().toString()); return null; } if (!(items instanceof ExpressionList)) { throw new CloudSpannerSQLException("Insert statement must specify a list of values", Code.INVALID_ARGUMENT); } if (insert.getColumns() == null || insert.getColumns().isEmpty()) { throw new CloudSpannerSQLException("Insert statement must specify a list of column names", Code.INVALID_ARGUMENT); } List<Expression> expressions = ((ExpressionList) items).getExpressions(); String table = unquoteIdentifier(insert.getTable().getFullyQualifiedName()); getParameterStore().setTable(table); WriteBuilder builder; if (insert.isUseDuplicate()) { /** * Do an insert-or-update. BUT: Cloud Spanner does not support supplying different values for * the insert and update statements, meaning that only the values specified in the INSERT part * of the statement will be considered. Anything specified in the 'ON DUPLICATE KEY UPDATE * ...' statement will be ignored. */ if (this.forceUpdate) builder = Mutation.newUpdateBuilder(table); else builder = Mutation.newInsertOrUpdateBuilder(table); } else { /** * Just do an insert and throw an error if a row with the specified key alread exists. */ builder = Mutation.newInsertBuilder(table); } int index = 0; for (Column col : insert.getColumns()) { String columnName = unquoteIdentifier(col.getFullyQualifiedName()); expressions.get(index).accept(new ValueBinderExpressionVisitorAdapter<>(getParameterStore(), builder.set(columnName), columnName)); index++; } return builder.build(); }