diff options
author | Bruce Momjian <bruce@momjian.us> | 2001-10-25 06:00:05 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2001-10-25 06:00:05 +0000 |
commit | d2e27b0674e238a4f94f1c190a395a530746d5d3 (patch) | |
tree | d654e117fdc20ecb84da14052fad5124c9f32012 /src/interfaces/jdbc/example/metadata.java | |
parent | b81844b1738c584d92330a5ccd0fbd8b603d2886 (diff) | |
download | postgresql-d2e27b0674e238a4f94f1c190a395a530746d5d3.tar.gz postgresql-d2e27b0674e238a4f94f1c190a395a530746d5d3.zip |
pgjindent jdbc files. First time jdbc files were formatted.
Diffstat (limited to 'src/interfaces/jdbc/example/metadata.java')
-rw-r--r-- | src/interfaces/jdbc/example/metadata.java | 536 |
1 files changed, 280 insertions, 256 deletions
diff --git a/src/interfaces/jdbc/example/metadata.java b/src/interfaces/jdbc/example/metadata.java index 8d674122739..182e4533e0c 100644 --- a/src/interfaces/jdbc/example/metadata.java +++ b/src/interfaces/jdbc/example/metadata.java @@ -15,260 +15,284 @@ import java.text.*; public class metadata { - Connection db; // The connection to the database - Statement st; // Our statement to run queries with - DatabaseMetaData dbmd; // This defines the structure of the database - - /** - * These are the available tests on DatabaseMetaData - */ - public void doDatabaseMetaData() throws SQLException { - if(doTest("getProcedures() - should show all available procedures")) - displayResult(dbmd.getProcedures(null,null,null)); - - if(doTest("getProcedures() with pattern - should show all circle procedures")) - displayResult(dbmd.getProcedures(null,null,"circle%")); - - if(doTest("getProcedureColumns() on circle procedures")) - displayResult(dbmd.getProcedureColumns(null,null,"circle%",null)); - - if(doTest("getTables()")) - displayResult(dbmd.getTables(null,null,null,null)); - - if(doTest("getColumns() - should show all tables, can take a while to run")) - displayResult(dbmd.getColumns(null,null,null,null)); - - if(doTest("getColumns() - should show the test_b table")) - displayResult(dbmd.getColumns(null,null,"test_b",null)); - - if(doTest("getColumnPrivileges() - should show all tables")) - displayResult(dbmd.getColumnPrivileges(null,null,null,null)); - - if(doTest("getPrimaryKeys()")) - displayResult(dbmd.getPrimaryKeys(null,null,null)); - - if(doTest("getTypeInfo()")) - displayResult(dbmd.getTypeInfo()); - - } - - /** - * These are the available tests on ResultSetMetaData - */ - public void doResultSetMetaData() throws SQLException { - - String sql = "select imagename,descr,source,cost from test_a,test_b,test_c where test_a.id=test_b.imageid and test_a.id=test_c.imageid"; - - System.out.println("Executing query for tests"); - ResultSet rs = st.executeQuery(sql); - ResultSetMetaData rsmd = rs.getMetaData(); - - if(doTest("isCurrency()")) - System.out.println("isCurrency on col 1 = "+rsmd.isCurrency(1)+" should be false\nisCurrency on col 4 = "+rsmd.isCurrency(4)+" should be true"); - - // Finally close the query. Now give the user a chance to display the - // ResultSet. - // - // NB: displayResult() actually closes the ResultSet. - if(doTest("Display query result")) { - System.out.println("Query: "+sql); - displayResult(rs); - } else - rs.close(); - } - - /** - * This creates some test data - */ - public void init() throws SQLException { - System.out.println("Creating some tables"); - cleanup(); - st.executeUpdate("create table test_a (imagename name,image oid,id int4)"); - st.executeUpdate("create table test_b (descr text,imageid int4,id int4)"); - st.executeUpdate("create table test_c (source text,cost money,imageid int4)"); - - System.out.println("Adding some data"); - st.executeUpdate("insert into test_a values ('test1',0,1)"); - st.executeUpdate("insert into test_b values ('A test description',1,2)"); - st.executeUpdate("insert into test_c values ('nowhere particular','$10.99',1)"); - } - - /** - * This removes the test data - */ - public void cleanup() throws SQLException { - try { - st.executeUpdate("drop table test_a"); - st.executeUpdate("drop table test_b"); - st.executeUpdate("drop table test_c"); - } catch(Exception ex) { - // We ignore any errors here - } - } - - public metadata(String args[]) throws ClassNotFoundException, FileNotFoundException, IOException, SQLException - { - String url = args[0]; - String usr = args[1]; - String pwd = args[2]; - - // Load the driver - Class.forName("org.postgresql.Driver"); - - // Connect to database - System.out.println("Connecting to Database URL = " + url); - db = DriverManager.getConnection(url, usr, pwd); - - dbmd = db.getMetaData(); - st = db.createStatement(); - - // This prints the backend's version - System.out.println("Connected to "+dbmd.getDatabaseProductName()+" "+dbmd.getDatabaseProductVersion()); - - init(); - - System.out.println(); - - // Now the tests - if(doTest("Test DatabaseMetaData")) - doDatabaseMetaData(); - - if(doTest("Test ResultSetMetaData")) - doResultSetMetaData(); - - System.out.println("\nNow closing the connection"); - st.close(); - db.close(); - - cleanup(); - } - - /** - * This asks if the user requires to run a test. - */ - public boolean doTest(String s) { - System.out.println(); - System.out.print(s); - System.out.print(" Perform test? Y or N:"); - System.out.flush(); - char c = ' '; - try { - while(!(c=='n' || c=='y' || c=='N' || c=='Y')) { - c=(char)System.in.read(); - } - } catch(IOException ioe) { - return false; - } - - return c=='y' || c=='Y'; - } - - /** - * This displays a result set. - * Note: it closes the result once complete. - */ - public void displayResult(ResultSet rs) throws SQLException - { - ResultSetMetaData rsmd = rs.getMetaData(); - int count=0; - - // Print the result column names - int cols = rsmd.getColumnCount(); - for(int i=1;i<=cols;i++) - System.out.print(rsmd.getColumnLabel(i)+(i<cols?"\t":"\n")); - - // now the results - while(rs.next()) { - count++; - for(int i=1;i<=cols;i++) { - Object o = rs.getObject(i); - if(rs.wasNull()) - System.out.print("{null}"+(i<cols?"\t":"\n")); - else - System.out.print(o.toString()+(i<cols?"\t":"\n")); - } - } - - System.out.println("Result returned "+count+" rows."); - - // finally close the result set - rs.close(); - } - - /** - * This process / commands (for now just /d) - */ - public void processSlashCommand(String line) throws SQLException - { - if(line.startsWith("\\d")) { - - if(line.startsWith("\\d ")) { - // Display details about a table - String table=line.substring(3); - displayResult(dbmd.getColumns(null,null,table,"%")); - } else { - String types[] = null; - if(line.equals("\\d")) - types=allUserTables; - else if(line.equals("\\di")) - types=usrIndices; - else if(line.equals("\\dt")) - types=usrTables; - else if(line.equals("\\ds")) - types=usrSequences; - else if(line.equals("\\dS")) - types=sysTables; - else - throw new SQLException("Unsupported \\d command: "+line); - - // Display details about all system tables - // - // Note: the first two arguments are ignored. To keep to the spec, - // you must put null here - // - displayResult(dbmd.getTables(null,null,"%",types)); - } - } else - throw new SQLException("Unsupported \\ command: "+line); - } - - private static final String allUserTables[] = {"TABLE","INDEX","SEQUENCE"}; - private static final String usrIndices[] = {"INDEX"}; - private static final String usrTables[] = {"TABLE"}; - private static final String usrSequences[] = {"SEQUENCE"}; - private static final String sysTables[] = {"SYSTEM TABLE","SYSTEM INDEX"}; - - /** - * Display some instructions on how to run the example - */ - public static void instructions() - { - System.out.println("\nThis is not really an example, but is used to test the various methods in\nthe DatabaseMetaData and ResultSetMetaData classes.\n"); - System.out.println("Useage:\n java example.metadata 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 debug items, don't put anything in\nhere."); - System.exit(1); - } - - /** - * This little lot starts the test - */ - public static void main(String args[]) - { - System.out.println("PostgreSQL metdata tester v6.4 rev 1\n"); - - if(args.length<3) - instructions(); - - // This line outputs debug information to stderr. To enable this, simply - // add an extra parameter to the command line - if(args.length>3) - DriverManager.setLogStream(System.err); - - // Now run the tests - try { - metadata test = new metadata(args); - } catch(Exception ex) { - System.err.println("Exception caught.\n"+ex); - ex.printStackTrace(); - } - } + Connection db; // The connection to the database + Statement st; // Our statement to run queries with + DatabaseMetaData dbmd; // This defines the structure of the database + + /** + * These are the available tests on DatabaseMetaData + */ + public void doDatabaseMetaData() throws SQLException + { + if (doTest("getProcedures() - should show all available procedures")) + displayResult(dbmd.getProcedures(null, null, null)); + + if (doTest("getProcedures() with pattern - should show all circle procedures")) + displayResult(dbmd.getProcedures(null, null, "circle%")); + + if (doTest("getProcedureColumns() on circle procedures")) + displayResult(dbmd.getProcedureColumns(null, null, "circle%", null)); + + if (doTest("getTables()")) + displayResult(dbmd.getTables(null, null, null, null)); + + if (doTest("getColumns() - should show all tables, can take a while to run")) + displayResult(dbmd.getColumns(null, null, null, null)); + + if (doTest("getColumns() - should show the test_b table")) + displayResult(dbmd.getColumns(null, null, "test_b", null)); + + if (doTest("getColumnPrivileges() - should show all tables")) + displayResult(dbmd.getColumnPrivileges(null, null, null, null)); + + if (doTest("getPrimaryKeys()")) + displayResult(dbmd.getPrimaryKeys(null, null, null)); + + if (doTest("getTypeInfo()")) + displayResult(dbmd.getTypeInfo()); + + } + + /** + * These are the available tests on ResultSetMetaData + */ + public void doResultSetMetaData() throws SQLException + { + + String sql = "select imagename,descr,source,cost from test_a,test_b,test_c where test_a.id=test_b.imageid and test_a.id=test_c.imageid"; + + System.out.println("Executing query for tests"); + ResultSet rs = st.executeQuery(sql); + ResultSetMetaData rsmd = rs.getMetaData(); + + if (doTest("isCurrency()")) + System.out.println("isCurrency on col 1 = " + rsmd.isCurrency(1) + " should be false\nisCurrency on col 4 = " + rsmd.isCurrency(4) + " should be true"); + + // Finally close the query. Now give the user a chance to display the + // ResultSet. + // + // NB: displayResult() actually closes the ResultSet. + if (doTest("Display query result")) + { + System.out.println("Query: " + sql); + displayResult(rs); + } + else + rs.close(); + } + + /** + * This creates some test data + */ + public void init() throws SQLException + { + System.out.println("Creating some tables"); + cleanup(); + st.executeUpdate("create table test_a (imagename name,image oid,id int4)"); + st.executeUpdate("create table test_b (descr text,imageid int4,id int4)"); + st.executeUpdate("create table test_c (source text,cost money,imageid int4)"); + + System.out.println("Adding some data"); + st.executeUpdate("insert into test_a values ('test1',0,1)"); + st.executeUpdate("insert into test_b values ('A test description',1,2)"); + st.executeUpdate("insert into test_c values ('nowhere particular','$10.99',1)"); + } + + /** + * This removes the test data + */ + public void cleanup() throws SQLException + { + try + { + st.executeUpdate("drop table test_a"); + st.executeUpdate("drop table test_b"); + st.executeUpdate("drop table test_c"); + } + catch (Exception ex) + { + // We ignore any errors here + } + } + + public metadata(String args[]) throws ClassNotFoundException, FileNotFoundException, IOException, SQLException + { + String url = args[0]; + String usr = args[1]; + String pwd = args[2]; + + // Load the driver + Class.forName("org.postgresql.Driver"); + + // Connect to database + System.out.println("Connecting to Database URL = " + url); + db = DriverManager.getConnection(url, usr, pwd); + + dbmd = db.getMetaData(); + st = db.createStatement(); + + // This prints the backend's version + System.out.println("Connected to " + dbmd.getDatabaseProductName() + " " + dbmd.getDatabaseProductVersion()); + + init(); + + System.out.println(); + + // Now the tests + if (doTest("Test DatabaseMetaData")) + doDatabaseMetaData(); + + if (doTest("Test ResultSetMetaData")) + doResultSetMetaData(); + + System.out.println("\nNow closing the connection"); + st.close(); + db.close(); + + cleanup(); + } + + /** + * This asks if the user requires to run a test. + */ + public boolean doTest(String s) + { + System.out.println(); + System.out.print(s); + System.out.print(" Perform test? Y or N:"); + System.out.flush(); + char c = ' '; + try + { + while (!(c == 'n' || c == 'y' || c == 'N' || c == 'Y')) + { + c = (char)System.in.read(); + } + } + catch (IOException ioe) + { + return false; + } + + return c == 'y' || c == 'Y'; + } + + /** + * This displays a result set. + * Note: it closes the result once complete. + */ + public void displayResult(ResultSet rs) throws SQLException + { + ResultSetMetaData rsmd = rs.getMetaData(); + int count = 0; + + // Print the result column names + int cols = rsmd.getColumnCount(); + for (int i = 1;i <= cols;i++) + System.out.print(rsmd.getColumnLabel(i) + (i < cols ? "\t" : "\n")); + + // now the results + while (rs.next()) + { + count++; + for (int i = 1;i <= cols;i++) + { + Object o = rs.getObject(i); + if (rs.wasNull()) + System.out.print("{null}" + (i < cols ? "\t" : "\n")); + else + System.out.print(o.toString() + (i < cols ? "\t" : "\n")); + } + } + + System.out.println("Result returned " + count + " rows."); + + // finally close the result set + rs.close(); + } + + /** + * This process / commands (for now just /d) + */ + public void processSlashCommand(String line) throws SQLException + { + if (line.startsWith("\\d")) + { + + if (line.startsWith("\\d ")) + { + // Display details about a table + String table = line.substring(3); + displayResult(dbmd.getColumns(null, null, table, "%")); + } + else + { + String types[] = null; + if (line.equals("\\d")) + types = allUserTables; + else if (line.equals("\\di")) + types = usrIndices; + else if (line.equals("\\dt")) + types = usrTables; + else if (line.equals("\\ds")) + types = usrSequences; + else if (line.equals("\\dS")) + types = sysTables; + else + throw new SQLException("Unsupported \\d command: " + line); + + // Display details about all system tables + // + // Note: the first two arguments are ignored. To keep to the spec, + // you must put null here + // + displayResult(dbmd.getTables(null, null, "%", types)); + } + } + else + throw new SQLException("Unsupported \\ command: " + line); + } + + private static final String allUserTables[] = {"TABLE", "INDEX", "SEQUENCE"}; + private static final String usrIndices[] = {"INDEX"}; + private static final String usrTables[] = {"TABLE"}; + private static final String usrSequences[] = {"SEQUENCE"}; + private static final String sysTables[] = {"SYSTEM TABLE", "SYSTEM INDEX"}; + + /** + * Display some instructions on how to run the example + */ + public static void instructions() + { + System.out.println("\nThis is not really an example, but is used to test the various methods in\nthe DatabaseMetaData and ResultSetMetaData classes.\n"); + System.out.println("Useage:\n java example.metadata 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 debug items, don't put anything in\nhere."); + System.exit(1); + } + + /** + * This little lot starts the test + */ + public static void main(String args[]) + { + System.out.println("PostgreSQL metdata tester v6.4 rev 1\n"); + + if (args.length < 3) + instructions(); + + // This line outputs debug information to stderr. To enable this, simply + // add an extra parameter to the command line + if (args.length > 3) + DriverManager.setLogStream(System.err); + + // Now run the tests + try + { + metadata test = new metadata(args); + } + catch (Exception ex) + { + System.err.println("Exception caught.\n" + ex); + ex.printStackTrace(); + } + } } |