eine Tabelle mit einem Feld gegeben, die einen Standardwert hat, sagen wie something
hier:MySQL von Java: einen Standardwert Einfügen eines PreparedStatement INSERT-Abfrage-Parameter mit
CREATE TABLE foo (
time DATETIME PRIMARY KEY,
something CHAR (16) DEFAULT 'a default',
);
... und eine vorbereitete Anweisung wie folgt aus :
INSERT INTO foo (time, something) VALUES (?, ?)
Wie entscheidet man dann den Standardwert von something
einfügen?
Ich weiß, ich kann es bekommen, indem Sie das Feld weglassen. In meinem Fall möchte ich jedoch in derselben Abfrage den Wert in einigen Datensätzen festlegen und auf die Datenbank verschieben, um das einzufügen, was in anderen als Standardwert konfiguriert ist.
Hier ist ein Beispiel-Code-Snippet:
String sql = "INSERT INTO foo (time, s1, s2, s3, ...) VALUES (?, ?, ?, ?, ...)";
// Many fields. You get the picture.
PreparedStatement stmt = connection.prepareStatement(sql);
connection.setAutoCommit(false);
// Insert the lines. The number of fields can change from one line to
// the next, depending on the sensors fitted at the time. The mapping
// of fields -> database values is defined by the enum Fields.
Field badField = null;
try {
for(String line: loglines) {
String loggedSensors[] = line.toString().split (",");
for(Field field : Field.values()) {
if (field.parseIndex >= loggedSensors.length) {
log.warning("using default value for absent field" +
field.columnName);
// Omitting the field generates an error.
// How do we set the field to a default here?
continue;
}
badField = field;
stmt.setObject(
field.ordinal()+1,
field.parse(loggedSensors[field.parseIndex]));
}
stmt.addBatch();
stmt.executeBatch();
}
} catch (Exception e) {
log.error("error inserting field "+badField, e);
return;
}
connection.commit();
Ich habe hier die Dokumentation gegoogelt und kontrolliert, ohne etwas zu finden, die diese für MySQL speziell antwortet:
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference.html
Warum verwenden Sie keine Bedingung? –
@YCF_L: Können Sie das näher ausführen? –
ich meine 'if () {// Standard verwenden} else {// den neuen Wert einfügen}', können Sie bitte etwas Code teilen, damit wir es verstehen können? –