Ich verwende UCanAccess, um Daten wie folgt in eine Access-Tabelle einzufügen Spalten:
- d1 double
- d2 double default null
d berechnet als IIf((If([d1] Is Null,0,[d1])=-999),Null,IIf([d2] Is Not Null,Round(([d1]+[d2])/2,1),[d1]))
In Access kann ich Null in d2 einfügen. Die Verwendung von UCanAccess zum Einfügen von Null führt zu folgendem Fehler:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.x.x external routine invocation Ausnahme: null Wert nicht zulässig
at [email protected]/net.ucanaccess.jdbc.UcanaccessStatement.execute(UcanaccessStatement.java:159)
at javaapplication23.JavaApplication23.main(JavaApplication23.java:35)
Hier ist mein Code:
Code: Select all
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
con = DriverManager.getConnection("jdbc:ucanaccess://" + database+ ";singleconnection=true", "", "");
try(Statement stmt = con.createStatement();){
stmt.execute("INSERT INTO Tab (d1, d2) VALUES (2.1, null);");
}
Die Verwendung der Nz()-Funktion anstelle von IS NULL wie in dieser Frage funktioniert nicht, da Nz in berechneten Feldern nicht zulässig ist.
Irgendwelche Ideen, was falsch ist oder wie man es beheben kann?