<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - przekazanie null do kolumny typu int - niezgodność typu Java]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=374&amp;type=atom"/>
	<updated>2010-01-13T17:20:19Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=374</id>
		<entry>
			<title type="html"><![CDATA[Odp: przekazanie null do kolumny typu int - niezgodność typu Java]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1702#p1702"/>
			<content type="html"><![CDATA[Już działa ok. a było to tak...

Dla sprawdzenia poprawności zapisu bezpośrednio w środowisku postgresa wysłano dane do bazy:
INSERT INTO teren (nr_t, rodz, opis, ip_ost_p, uwagi) VALUES (11,'mia','wie',null,null);
INSERT 0 1
 
zatem dowód, że problem jest z przekazem z Javy i tu z pomocą przyszedł niespodziewanie sławny Zbyszek M. podając:

[url]http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html#setNull(int,[/url] int) 
a tu jest 
setNull(int parameterIndex, int sqlType) 
ale bez przykładu nie dotarło do mnie jak to praktycznie zapisać zwłaszcza drugą zmienną w nawiasie.
Ale wiedząc już o istnieniu setNull przykład się znalazł  w googlach i praktycznie wygląda to tak:

pobieram wartość z edytowanego pola tabeli (GUI)
getPole5str= (String)t_teren.getValueAt(wiersz,4);

buduję polecenie do bazy:
zapytanieRozkaz = "UPDATE teren SET nr_ter=?, rodz=?, opis=?, ip_ost_p=?, uwagi=? WHERE ip_teren=?"; 

zmienWiersz = con.prepareStatement(zapytanieRozkaz);

i teraz przepraszam za tę konstrukcję ale to tylko dla celów testowych:

if (getPole5str.equals("") || getPole5str==null )
       {
      // getPole5 = Integer.parseInt(getPole5str);     --- no właśnie to nie działało dla ==null
       zmienWiersz.setNull(4, java.sql.Types.INTEGER);   // to jest to !!!
       } 
     else
       {
       getPole5 = Integer.parseInt(getPole5str);
       zmienWiersz.setInt(4, getPole5);
       }

I teraz jest ok.]]></content>
			<author>
				<name><![CDATA[r_k2]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=341</uri>
			</author>
			<updated>2010-01-13T17:20:19Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1702#p1702</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: przekazanie null do kolumny typu int - niezgodność typu Java]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1701#p1701"/>
			<content type="html"><![CDATA[A jak wstawiasz dane? Zwykły INSERT?, możesz go pokazać?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-01-13T06:07:43Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1701#p1701</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[przekazanie null do kolumny typu int - niezgodność typu Java]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1700#p1700"/>
			<content type="html"><![CDATA[Witam, to forum jakoś wyjątkowo mi się spodobało i lubię "rski" więc co wy na to, że spróbuję pod SQL podpiąć temat zapytań w SQLu ale z Javy...

Zatem usiłuję wysłać z programu w Javie dane do bazy w postgreSQLu.
Kolumna w postgresie jest typu int i na początku jest nieuzupełniona a potem jest np. 1, 12, 5...
Ale w pewnym momencie pole tej kolumny ma być puste.
Wydawało się mi, że (w kodzie Java) wystarczy int a = null; 
i takie a przekażę do bazy ale niestety:
incompatible types
found   : <nulltype>
required: int
a po próbie bardziej bezpośredniego przekazania null:
zmienWiersz.setInt(4, null);
błąd:
SQLException: ERROR: column "ip_ost_p" is of type smallint but expression is of type character varying 

No i nie wiem jak pośrednio wykasować dane z pola w postgresie?]]></content>
			<author>
				<name><![CDATA[r_k2]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=341</uri>
			</author>
			<updated>2010-01-12T22:42:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1700#p1700</id>
		</entry>
</feed>
