2009-07-31 3 views
0

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?

Antwort

2

Können Sie die Datenbank nicht abfragen und den Spaltentyp über die Schnittstelle ResultSetMetaData abrufen?

+0

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

+0

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

+0

Können Sie nicht den Wert und den Typ eingeben, anstatt nur den Wert, den Sie jetzt bekommen? – OpenSource