diff options
Diffstat (limited to 'src/interfaces/jdbc/JDBC_Test.java')
-rw-r--r-- | src/interfaces/jdbc/JDBC_Test.java | 138 |
1 files changed, 101 insertions, 37 deletions
diff --git a/src/interfaces/jdbc/JDBC_Test.java b/src/interfaces/jdbc/JDBC_Test.java index 2453e4ca949..c546469358b 100644 --- a/src/interfaces/jdbc/JDBC_Test.java +++ b/src/interfaces/jdbc/JDBC_Test.java @@ -10,16 +10,21 @@ class JDBC_Test public static void main(String argv[]) { + if(argv.length<3) { + System.err.println("java JDBC_Test jdbc-url user password [debug]"); + System.exit(1); + } + String url = new String(argv[0]); String usr = new String(argv[1]); String pwd = new String(argv[2]); Connection db; Statement s; - ResultSet rs; // This line outputs debug information to stderr. To enable this, simply - // remove the // - DriverManager.setLogStream(System.err); + // add an extra parameter to the command line + if(argv.length>3) + DriverManager.setLogStream(System.err); // Load the driver try { @@ -31,12 +36,15 @@ class JDBC_Test // Lets do a few things -- it doesn't do everything, but // it tests out basic functionality try { + //---------------------------------------- + // Connect to database System.out.println("Connecting to Database URL = " + url); db = DriverManager.getConnection(url, usr, pwd); System.out.println("Connected...Now creating a statement"); s = db.createStatement(); - // test Date & Warnings + //---------------------------------------- + // test DateStyle & Warnings System.out.println("Ok... now set European date style"); s.executeUpdate("set datestyle='european'"); @@ -49,59 +57,115 @@ class JDBC_Test } db.clearWarnings(); + //---------------------------------------- + // Creating a table System.out.println("Ok...now we will create a table"); s.executeUpdate("create table test (a int2, b int2,c timestamp,d date)"); + //---------------------------------------- + // Simple inserts System.out.println("Now we will insert some columns"); s.executeUpdate("insert into test values (1, 1,'now','now')"); s.executeUpdate("insert into test values (2, 1,'now','01-11-1997')"); // As we are in european, this should mean 1 November 1997 s.executeUpdate("insert into test values (3, 1,'now','11-01-1997')"); // As we are in european, this should mean 11 January 1997 System.out.println("Inserted some data"); + //---------------------------------------- + // Now a select (see seperate method at end) System.out.println("Now lets try a select"); - rs = s.executeQuery("select a, b,c,d from test"); - System.out.println("Back from the select...the following are results"); - System.out.println("row a b c d 'd as string'"); - int i = 0; - while (rs.next()) - { - int a = rs.getInt("a"); // Example of retriving by column name - int b = rs.getInt("b"); - Timestamp c = rs.getTimestamp(3); // Example of by column number - java.sql.Date d = rs.getDate(4); // Note, java.sql.Date here - System.out.println("row " + i + " " + a + " " + b + " " + c + " " + d + " '"+rs.getString(4)+"'"); - i++; - } + select(s,""); - // This is a bug at the moment... when you use set datestyle - // it must be followed by show datestyle - System.out.println("Now switch to US date format"); - s.executeUpdate("set datestyle='US'"); - s.executeUpdate("show datestyle"); - - System.out.println("Now lets try a select"); - rs = s.executeQuery("select a, b,c,d from test"); - System.out.println("Back from the select...the following are results"); - //int i = 0; - System.out.println("row a b c d 'd as string'"); - while (rs.next()) - { - int a = rs.getInt("a"); // Example of retriving by column name - int b = rs.getInt("b"); - Timestamp c = rs.getTimestamp(3); // Example of by column number - java.sql.Date d = rs.getDate(4); // Note, java.sql.Date here - System.out.println("row " + i + " " + a + " " + b + " " + c + " " + d + " '"+rs.getString(4)+"'"); - i++; - } + //---------------------------------------- + // Now run some tests + runTests(db,s); + //---------------------------------------- + // Dropping a table System.out.println("Ok...dropping the table"); s.executeUpdate("drop table test"); + //---------------------------------------- + // Closing the connection System.out.println("Now closing the connection"); s.close(); db.close(); + + //---------------------------------------- } catch (SQLException e) { System.out.println("Exception: " + e.toString()); } } + + /** + * This performs some tests - not really part of an example, hence + * they are in a seperate method. + */ + public static void runTests(Connection db, Statement s) throws SQLException + { + //---------------------------------------- + // This is a bug at the moment... when you use set datestyle + // it must be followed by show datestyle + System.out.println("Now switch to US date format"); + s.executeUpdate("set datestyle='US'"); + s.executeUpdate("show datestyle"); + + System.out.println("Now lets try a select"); + select(s,""); + + //---------------------------------------- + // Inserting dates using PreparedStatement + System.out.println("Ok, now a test using PreparedStatement"); + Date dt = new Date(97,11,1); + PreparedStatement ps = db.prepareStatement("insert into test values (?,?,'now',?)"); + + // first insert in US style + s.executeUpdate("set datestyle='US'"); + s.executeUpdate("show datestyle"); + ps.setInt(1,8); + ps.setInt(2,8); + ps.setDate(3,dt); + ps.executeUpdate(); + + // second insert in European style + s.executeUpdate("set datestyle='european'"); + s.executeUpdate("show datestyle"); + ps.setInt(1,9); + ps.setInt(2,9); + ps.setDate(3,dt); + ps.executeUpdate(); + + System.out.println("Now run the select again - first as European"); + select(s,"where a>7"); + + s.executeUpdate("set datestyle='US'"); + s.executeUpdate("show datestyle"); + System.out.println("Then as US"); + select(s,"where a>7"); + } + + /** + * This performs a select. It's seperate because the tests use it in + * multiple places. + * @param s Statement to run under + * @throws SQLException + */ + public static void select(Statement s,String sql) throws SQLException + { + sql="select a, b,c,d from test "+sql; + System.out.println("\nQuery: "+sql); + ResultSet rs = s.executeQuery(sql); + System.out.println("row a b c d 'd as string'"); + System.out.println("-------------------------------------------------------------------------------"); + int i = 0; + while(rs.next()) { + int a = rs.getInt("a"); // Example of retriving by column name + int b = rs.getInt("b"); + Timestamp c = rs.getTimestamp(3); // Example of by column number + java.sql.Date d = rs.getDate(4); // Note, java.sql.Date here + System.out.println("row " + i + " " + a + " " + b + " " + c + " " + d + " '"+rs.getString(4)+"'"); + i++; + } + rs.close(); + } + } |