Ich habe diese Methode zum Einfügen von Daten mit jdbc, die den Wert entsprechend dem Java-Typ einfügen wird. Etwas wie folgt aus:Was würde passieren, wenn ich in vorbereiteter Anweisung immer mit varchar null setze?
Object o = map.get(key);
if(o == null) {
// setNull(index);
} else if(o instanceof String) {
// setString(index, (String) o);
} else if(o instanceof Timestamp) {
// setTimestampt(index, (Timestamp) o);
} else if(o instanceof Integer) {
// setInt(index, (Integer) o);
}
index++;
Es hat ein Problem, obwohl (daneben ist alles kommentiert: P)
Wenn der Wert von o null ist, ich bin requiered "setNull(int, int)" Methode zu verwenden, aber ich habe den SQL-Typ angeben:
... Hinweis: Sie müssen den SQL-Typ des Parameters angeben.
Aber ... ich weiß nicht, die Art, also bin ich in Anbetracht Gebrauch immer VARCHAR (nur weil)
setNull(index,Types.VARCHAR); .
Was würde passieren, wenn ich mit varchar in vorbereitete Anweisung null gesetzt immer?
Ich verwende:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
Mit Oracle JDB-Treiber:
11.1.0.7.0-Production (ojdbc6.jar)
Was wäre eine Alternative?
Es ist ein bisschen kompliziert. Ich täusche mich mit einer extra extra Dynamik herum (irgendwie), also habe ich nicht wirklich die genaue Position der Spalte. Aber stattdessen setze ich die Position basierend auf dem Spaltennamen (wie EMPL_ID kann die 20. Spalte sein, aber ich setze es wie die erste auf meinem PSTMT .....) – OscarRyz
Warte, warte ... es beginnt zu Sinn machen .... mmmhhh .... lass mich für eine Weile kauen ... Was passiert, wenn ich das tue (wähle * aus der Tabelle, wo 1 = 0; hole die ResultSetMetadata und erhalte den Typ mit dem Spaltennamen ... (o Nein, ich sehe eine andere Karte in meiner Zukunft ...) ... –
OscarRyz
Können Sie nicht den Wert und den Typ eingeben, anstatt nur den Wert, den Sie jetzt bekommen? – OpenSource