1+ package org .postgresql .test .jdbc2 ;
2+
3+ import java .sql .*;
4+ import junit .framework .TestCase ;
5+
6+ import org .postgresql .test .JDBC2Tests ;
7+ /**
8+ * <p>Title: </p>
9+ * <p>Description: </p>
10+ * <p>Copyright: Copyright (c) 2001</p>
11+ * <p>Company: </p>
12+ * @author unascribed
13+ * @version 1.0
14+ */
15+
16+ public class UpdateableResultTest extends TestCase
17+ {
18+
19+ public UpdateableResultTest (String name )
20+ {
21+ super (name );
22+ }
23+
24+ public void testUpdateable ()
25+ {
26+ try
27+ {
28+ Connection con =JDBC2Tests .openDB ();
29+ JDBC2Tests .createTable (con ,"updateable" ,"id int primary key, name text, notselected text" );
30+ JDBC2Tests .createTable (con ,"second" ,"id1 int primary key, name1 text" );
31+
32+ Statement st1 =con .createStatement ();
33+ boolean retVal =st1 .execute ("insert into updateable ( id, name, notselected ) values (1, 'jake', 'avalue')" );
34+ assert (retVal ==false );
35+
36+ retVal =st1 .execute ("insert into second (id1, name1) values (1, 'jake')" );
37+ assertTrue ( !retVal );
38+ st1 .close ();
39+
40+ Statement st =con .createStatement (ResultSet .TYPE_SCROLL_INSENSITIVE ,ResultSet .CONCUR_UPDATABLE );
41+ ResultSet rs =st .executeQuery ("select id, name, notselected from updateable" );
42+
43+ assertNotNull (rs );
44+
45+ while (rs .next ())
46+ {
47+ rs .updateInt ("id" ,2 );
48+ rs .updateString ("name" ,"dave" );
49+ rs .updateRow ();
50+ assertTrue (rs .getInt ("id" ) ==2 );
51+ assertTrue (rs .getString ("name" ).equals ("dave" ));
52+ assertTrue (rs .getString ("notselected" ).equals ("avalue" ) );
53+
54+ rs .deleteRow ();
55+ rs .moveToInsertRow ();
56+ rs .updateInt ("id" ,3 );
57+ rs .updateString ("name" ,"paul" );
58+
59+ rs .insertRow ();
60+
61+ assertTrue (rs .getInt ("id" ) ==3 );
62+ assertTrue (rs .getString ("name" ).equals ("paul" ));
63+ assertTrue (rs .getString ("notselected" ) ==null );
64+
65+ }
66+
67+ rs .close ();
68+
69+ rs =st .executeQuery ("select id1, id, name, name1 from updateable, second" );
70+ try
71+ {
72+ while (rs .next () )
73+ {
74+ rs .updateInt ("id" ,2 );
75+ rs .updateString ("name" ,"dave" );
76+ rs .updateRow ();
77+ }
78+
79+
80+ assertTrue ("should not get here, update should fail" ,false );
81+ }
82+ catch (SQLException ex ){}
83+
84+ try
85+ {
86+ rs =st .executeQuery ("select oid,* from updateable" );
87+ if (rs .first () )
88+ {
89+ rs .updateInt ("id" ,3 );
90+ rs .updateString ("name" ,"dave3" );
91+ rs .updateRow ();
92+ assertTrue (rs .getInt ("id" ) ==3 );
93+ assertTrue (rs .getString ("name" ).equals ("dave3" ));
94+
95+ rs .moveToInsertRow ();
96+ rs .updateInt ("id" ,4 );
97+ rs .updateString ("name" ,"dave4" );
98+
99+ rs .insertRow ();
100+ rs .updateInt ("id" ,5 );
101+ rs .updateString ("name" ,"dave5" );
102+ rs .insertRow ();
103+
104+ rs .moveToCurrentRow ();
105+ assertTrue (rs .getInt ("id" ) ==3 );
106+ assertTrue (rs .getString ("name" ).equals ("dave3" ));
107+
108+ assertTrue (rs .next () );
109+ assertTrue (rs .getInt ("id" ) ==4 );
110+ assertTrue (rs .getString ("name" ).equals ("dave4" ));
111+
112+ assertTrue (rs .next () );
113+ assertTrue (rs .getInt ("id" ) ==5 );
114+ assertTrue (rs .getString ("name" ).equals ("dave5" ));
115+
116+ }
117+ }
118+ catch (SQLException ex )
119+ {
120+ fail (ex .getMessage ());
121+ }
122+
123+ st .close ();
124+
125+ JDBC2Tests .dropTable (con ,"updateable" );
126+ JDBC2Tests .closeDB (con );
127+ }
128+ catch (Exception ex )
129+ {
130+ fail (ex .getMessage ());
131+ }
132+ }
133+
134+
135+ }