Problem bei Boolean in PreparedStatement

javabar

Mitglied
Der folgende Code

Java:
Connection conn;
...
PreparedStatement pstmt = conn.prepareStatement("UPDATE Artikel SET Aktiv=? WHERE Artikelnummer = ?");
pstmt.setBoolean(1, true);
pstmt.setLong(2, 10001);
pstmt.executeUpdate();
führt den SQL-Befehl

SQL:
UPDATE Artikel SET Aktiv=1 WHERE Artikelnummer = 10001
aus. Nun ist das Feld "Aktiv" ist in der DB vom Typ "smallint", und bei true muss der Wert = -1 sein. Alles was != -1 ist, wird als false gewertet.

Kann man die Behandlung von Boolean irgendwie beeinflussen oder muss man sich selber drum kümmern, es z.B. durch
Java:
pstmt.setByte(1, value ? -1 : 0));
ersetzen?

Grüße

Egon Schmid
 
Der folgende Code

Java:
[code=sql]UPDATE Artikel SET Aktiv=1 WHERE Artikelnummer = 10001
aus. Nun ist das Feld "Aktiv" ist in der DB vom Typ "smallint", und bei true muss der Wert = -1 sein. Alles was != -1 ist, wird als false gewertet.

Welche DB? Warum muss der Wert -1 sein?
1=true 0=false
 
Auf der DB (MS SQL) läuft ein Warenwirtschaftssystem, das ist halt sch***** entwickelt mit Access, und bei dem ist halt -1 = true und 0 = wahr.
 
???:L
Auf der DB (MS SQL) läuft ein Warenwirtschaftssystem, das ist halt sch***** entwickelt mit Access, und bei dem ist halt -1 = true und 0 = wahr.

0 = wahr und -1 = true ???:L

Ja entweder du machst ein update in deinen Tabellen und ziehst das gerade oder du musst es selber handeln...
 
Kann man die Behandlung von Boolean irgendwie beeinflussen oder muss man sich selber drum kümmern, es z.B. durch
Java:
pstmt.setByte(1, value ? -1 : 0));
ersetzen?

Da wird dir keine andere Wahl bleiben. Das funktioniert doch so, sollte also kein Problem sein, obwohl ich wohl setInt nehmen würde.

Alternativ und sehr aufwändig:

PreparedStatement selber implementieren und setBoolean überschreiben 😉
 

Neue Themen


Zurück
Oben