// For large inserts, a PreparedStatement is more efficient, because it
// supports the idea of precompiling the SQL statement, and to store
// directly, a Java object into any column. PostgreSQL doesnt support
// precompiling, but does support setting a column to the value of a
// Java object (like Date, String, etc).
//
// Also, this is the only way of writing dates in a datestyle independent
// manner. (DateStyles are PostgreSQL's way of handling different methods
// of representing dates in the Date data type.)
PreparedStatementps=db.prepareStatement("insert into basic values (?,?)");
for(inti=2;i<5;i++)
{
ps.setInt(1,4);// "column a" = 5
ps.setInt(2,i);// "column b" = i
ps.executeUpdate();// executeUpdate because insert returns no data
}
ps.close();// Always close when we are done with it
// Finally perform a query on the table
System.out.println("performing a query");
ResultSetrs=st.executeQuery("select a, b from basic");
if(rs!=null)
{
// Now we run through the result set, printing out the result.
// Note, we must call .next() before attempting to read any results
while(rs.next())
{
inta=rs.getInt("a");// This shows how to get the value by name
intb=rs.getInt(2);// This shows how to get the value by column
System.out.println(" a="+a+" b="+b);
}
rs.close();// again, you must close the result when done
}
// Now run the query again, showing a more efficient way of getting the
// result if you don't know what column number a value is in
System.out.println("performing another query");
rs=st.executeQuery("select * from basic where b>1");
if(rs!=null)
{
// First find out the column numbers.
//
// It's best to do this here, as calling the methods with the column
// numbers actually performs this call each time they are called. This
// really speeds things up on large queries.
//
intcol_a=rs.findColumn("a");
intcol_b=rs.findColumn("b");
// Now we run through the result set, printing out the result.
// Again, we must call .next() before attempting to read any results
while(rs.next())
{
inta=rs.getInt(col_a);// This shows how to get the value by name
intb=rs.getInt(col_b);// This shows how to get the value by column
System.out.println(" a="+a+" b="+b);
}
rs.close();// again, you must close the result when done
}
// Now test maxrows by setting it to 3 rows
st.setMaxRows(3);
System.out.println("performing a query limited to "+st.getMaxRows());
rs=st.executeQuery("select a, b from basic");
while(rs.next())
{
inta=rs.getInt("a");// This shows how to get the value by name
intb=rs.getInt(2);// This shows how to get the value by column
System.out.println(" a="+a+" b="+b);
}
rs.close();// again, you must close the result when done
// The last thing to do is to drop the table. This is done in the
// cleanup() method.
}
/**
*Displaysomeinstructionsonhowtoruntheexample
*/
publicstaticvoidinstructions()
{
System.out.println("\nThis example tests the basic components of the JDBC driver, demonstrating\nhow to build simple queries in java.\n");
System.out.println("Useage:\n java example.basic jdbc:postgresql:database user password [debug]\n\nThe debug field can be anything. It's presence will enable DriverManager's\ndebug trace. Unless you want to see screens of items, don't put anything in\nhere.");
System.exit(1);
}
/**
*Thislittlelotstartsthetest
*/
publicstaticvoidmain(Stringargs[])
{
System.out.println("PostgreSQL basic test v6.3 rev 1\n");
if(args.length<3)
instructions();
// This line outputs debug information to stderr. To enable this, simply