in adb2client/src/main/java/com/alibaba/cloud/analyticdb/adbclient/AdbClient.java [626:659]
private String generateInsertSql(String tableName, Connection connection, Row record) throws SQLException {
String sql = null;
StringBuilder sqlSb = new StringBuilder();
sqlSb.append(this.insertSqlPrefix.get(tableName));
sqlSb.append("(");
int columnsSize = this.databaseConfig.getColumns(tableName).size();
for (int i = 0; i < columnsSize; i++) {
if ((i + 1) != columnsSize) {
sqlSb.append("?,");
} else {
sqlSb.append("?");
}
}
sqlSb.append(")");
//mysql impl warn: if a database access error occurs or this method is called on a closed connection
PreparedStatement statement = connection.prepareStatement(sqlSb.toString());
for (int i = 0; i < this.databaseConfig.getColumns(tableName).size(); i++) {
String columnName = this.databaseConfig.getColumns(tableName).get(i);
int columnSqltype = this.configColumnsMetaData.get(tableName).get(columnName).getLeft();
if (record.getColumnValues().get(i) == null) {
if (this.tableInfo.get(tableName).getColumns().get(i).getDefaultValue() != null) {
prepareColumnTypeValue(statement, columnSqltype, this.tableInfo.get(tableName).getColumns().get(i).getDefaultValue(), i, columnName, tableName);
} else {
prepareColumnTypeValue(statement, columnSqltype, null, i, columnName, tableName);
}
} else {
prepareColumnTypeValue(statement, columnSqltype, record.getColumnValues().get(i).toString(), i, columnName, tableName);
}
}
// sql = ((JDBC4PreparedStatement) ((DruidPooledPreparedStatement) statement).getRawPreparedStatement()).asSql();
sql = statement.unwrap(com.mysql.jdbc.PreparedStatement.class).asSql();
closeDBResources(null, statement, null);
return sql;
}