in src/main/protocol-impl/java/com/mysql/cj/protocol/a/StringValueEncoder.java [117:249]
public String getString(BindValue binding) {
String x = (String) binding.getValue();
switch (binding.getMysqlType()) {
case NULL:
return "null";
case BOOLEAN:
case BIT:
Boolean b = null;
if ("true".equalsIgnoreCase(x) || "Y".equalsIgnoreCase(x)) {
b = true;
} else if ("false".equalsIgnoreCase(x) || "N".equalsIgnoreCase(x)) {
b = false;
} else if (x.matches("-?\\d+\\.?\\d*")) {
b = !x.matches("-?[0]+[.]*[0]*");
} else {
throw ExceptionFactory.createException(WrongArgumentException.class, Messages.getString("PreparedStatement.66", new Object[] { x }),
this.exceptionInterceptor);
}
return String.valueOf(b ? 1 : 0);
case TINYINT:
case TINYINT_UNSIGNED:
case SMALLINT:
case SMALLINT_UNSIGNED:
case MEDIUMINT:
case MEDIUMINT_UNSIGNED:
case INT:
return String.valueOf(Integer.parseInt(x));
case INT_UNSIGNED:
case BIGINT:
return String.valueOf(Long.parseLong(x));
case BIGINT_UNSIGNED:
return String.valueOf(new BigInteger(x).longValue());
case FLOAT:
case FLOAT_UNSIGNED:
return StringUtils.fixDecimalExponent(Float.toString(Float.parseFloat(x)));
case DOUBLE:
case DOUBLE_UNSIGNED:
return StringUtils.fixDecimalExponent(Double.toString(Double.parseDouble(x)));
case DECIMAL:
case DECIMAL_UNSIGNED:
return getScaled(new BigDecimal(x), binding.getScaleOrLength()).toPlainString();
case CHAR:
case ENUM:
case SET:
case VARCHAR:
case TINYTEXT:
case TEXT:
case MEDIUMTEXT:
case LONGTEXT:
case JSON:
case BINARY:
case GEOMETRY:
case VARBINARY:
case TINYBLOB:
case BLOB:
case MEDIUMBLOB:
case LONGBLOB:
StringBuilder sb = new StringBuilder("'");
sb.append(x);
sb.append("'");
return sb.toString();
case DATE:
Object dt = TimeUtil.parseToDateTimeObject(x, binding.getMysqlType());
if (dt instanceof LocalDate) {
sb = new StringBuilder("'");
sb.append(((LocalDate) dt).format(TimeUtil.DATE_FORMATTER));
sb.append("'");
return sb.toString();
} else if (dt instanceof LocalDateTime) {
sb = new StringBuilder("'");
sb.append(((LocalDateTime) dt).format(TimeUtil.DATE_FORMATTER));
sb.append("'");
return sb.toString();
}
throw ExceptionFactory.createException(WrongArgumentException.class,
Messages.getString("PreparedStatement.67", new Object[] { dt.getClass().getName(), binding.getMysqlType().toString() }),
this.exceptionInterceptor);
case DATETIME:
case TIMESTAMP:
dt = TimeUtil.parseToDateTimeObject(x, binding.getMysqlType());
if (dt instanceof LocalDate) {
sb = new StringBuilder("'");
sb.append(LocalDateTime.of((LocalDate) dt, TimeUtil.DEFAULT_TIME).format(TimeUtil.DATETIME_FORMATTER_WITH_OPTIONAL_MICROS));
sb.append("'");
return sb.toString();
} else if (dt instanceof LocalDateTime) {
sb = new StringBuilder("'");
sb.append(adjustLocalDateTime((LocalDateTime) dt, binding.getField()).format(TimeUtil.DATETIME_FORMATTER_WITH_OPTIONAL_MICROS));
sb.append("'");
return sb.toString();
}
throw ExceptionFactory.createException(WrongArgumentException.class,
Messages.getString("PreparedStatement.67", new Object[] { dt.getClass().getName(), binding.getMysqlType().toString() }),
this.exceptionInterceptor);
case TIME:
dt = TimeUtil.parseToDateTimeObject(x, binding.getMysqlType());
if (dt instanceof LocalTime) {
sb = new StringBuilder("'");
sb.append(adjustLocalTime((LocalTime) dt, binding.getField()).format(TimeUtil.TIME_FORMATTER_WITH_OPTIONAL_MICROS));
sb.append("'");
return sb.toString();
} else if (dt instanceof LocalDateTime) {
sb = new StringBuilder("'");
sb.append(adjustLocalTime(((LocalDateTime) dt).toLocalTime(), binding.getField()).format(TimeUtil.TIME_FORMATTER_WITH_OPTIONAL_MICROS));
sb.append("'");
return sb.toString();
} else if (dt instanceof Duration) {
sb = new StringBuilder("'");
sb.append(TimeUtil.getDurationString(adjustDuration((Duration) dt, binding.getField())));
sb.append("'");
return sb.toString();
}
throw ExceptionFactory.createException(WrongArgumentException.class,
Messages.getString("PreparedStatement.67", new Object[] { dt.getClass().getName(), binding.getMysqlType().toString() }),
this.exceptionInterceptor);
case YEAR:
dt = TimeUtil.parseToDateTimeObject(x, binding.getMysqlType());
if (dt instanceof LocalDate) {
return String.valueOf(((LocalDate) dt).getYear());
} else if (dt instanceof LocalDateTime) {
return String.valueOf(((LocalDateTime) dt).getYear());
}
throw ExceptionFactory.createException(WrongArgumentException.class,
Messages.getString("PreparedStatement.67", new Object[] { dt.getClass().getName(), binding.getMysqlType().toString() }),
this.exceptionInterceptor);
default:
break;
}
throw ExceptionFactory.createException(WrongArgumentException.class,
Messages.getString("PreparedStatement.67", new Object[] { binding.getValue().getClass().getName(), binding.getMysqlType().toString() }),
this.exceptionInterceptor);
}