View Tables of DB2 Database using JDBC

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dvawdrey
    New Member
    • Sep 2007
    • 1

    View Tables of DB2 Database using JDBC

    Can someone help me please with the following code:
    Code:
    try {
    			DatabaseMetaData metadata=con.getMetaData();
    			System.out.println(metadata.getDriverName());
    			System.out.println("Driver version: " +metadata.getDriverVersion());
    
    			System.out.print("JDBC version: " + metadata.getJDBCMajorVersion());
    			System.out.println("." +metadata.getJDBCMinorVersion());
    
    			System.out.println("Database product name: " +metadata.getDatabaseProductName());
    			System.out.println("Database product version: " +metadata.getDatabaseProductVersion());
    			System.out.print("Database version: " +metadata.getDatabaseMajorVersion());
    			System.out.println("." +metadata.getDatabaseMinorVersion());
    
    			String[] names = {"TABLE"};
    			//exception occurs on next line:
    			ResultSet tables = metadata.getTables(null,"%", null, names);
    			while (tables.next()) {
    				String tableName = tables.getString("TABLE_NAME");
    				System.out.println(tableName);
    			}
    		} catch (SQLException se) {
    			System.out.println("Error: could not get tables");
    			se.printStackTrace();
    			System.exit(1);
    		}
    I get the following error, which I have not been able to resolve:

    IBM DB2 JDBC Universal Driver Architecture
    Driver version: 3.1.57
    JDBC version: 3.0
    Database product name: DB2/AIX64
    Database product version: SQL09013
    Database version: 9.1
    Error: could not get tables
    com.ibm.db2.jcc .c.SqlException : DB2 SQL error: SQLCODE: -443, SQLSTATE: 38553, SQLERRMC: SYSIBM.SQLTABLE S;TABLES;SYSIBM :CLI:-805
    at com.ibm.db2.jcc .c.fg.d(fg.java :1340)
    at com.ibm.db2.jcc .b.gb.k(gb.java :351)
    at com.ibm.db2.jcc .b.gb.e(gb.java :96)
    at com.ibm.db2.jcc .b.w.e(w.java:8 3)
    at com.ibm.db2.jcc .b.vb.i(vb.java :164)
    at com.ibm.db2.jcc .c.fg.q(fg.java :1311)
    at com.ibm.db2.jcc .c.gg.d(gg.java :2386)
    at com.ibm.db2.jcc .c.hg.V(hg.java :146)
    at com.ibm.db2.jcc .c.t.a(t.java:7 384)
    at com.ibm.db2.jcc .c.t.a(t.java:5 974)
    at com.ibm.db2.jcc .c.t.getTables( t.java:5885)
    ...
  • SueDaws
    New Member
    • Mar 2008
    • 1

    #2
    Did you ever get a reply to this post? I ask because we are also getting the same error - DB2 version 8 fixpack 14, AIX 5.3 ML4 and ML5 - and have been unable to resolve it.

    Originally posted by dvawdrey
    Can someone help me please with the following code:
    Code:
    try {
    			DatabaseMetaData metadata=con.getMetaData();
    			System.out.println(metadata.getDriverName());
    			System.out.println("Driver version: " +metadata.getDriverVersion());
    
    			System.out.print("JDBC version: " + metadata.getJDBCMajorVersion());
    			System.out.println("." +metadata.getJDBCMinorVersion());
    
    			System.out.println("Database product name: " +metadata.getDatabaseProductName());
    			System.out.println("Database product version: " +metadata.getDatabaseProductVersion());
    			System.out.print("Database version: " +metadata.getDatabaseMajorVersion());
    			System.out.println("." +metadata.getDatabaseMinorVersion());
    
    			String[] names = {"TABLE"};
    			//exception occurs on next line:
    			ResultSet tables = metadata.getTables(null,"%", null, names);
    			while (tables.next()) {
    				String tableName = tables.getString("TABLE_NAME");
    				System.out.println(tableName);
    			}
    		} catch (SQLException se) {
    			System.out.println("Error: could not get tables");
    			se.printStackTrace();
    			System.exit(1);
    		}
    I get the following error, which I have not been able to resolve:

    IBM DB2 JDBC Universal Driver Architecture
    Driver version: 3.1.57
    JDBC version: 3.0
    Database product name: DB2/AIX64
    Database product version: SQL09013
    Database version: 9.1
    Error: could not get tables
    com.ibm.db2.jcc .c.SqlException : DB2 SQL error: SQLCODE: -443, SQLSTATE: 38553, SQLERRMC: SYSIBM.SQLTABLE S;TABLES;SYSIBM :CLI:-805
    at com.ibm.db2.jcc .c.fg.d(fg.java :1340)
    at com.ibm.db2.jcc .b.gb.k(gb.java :351)
    at com.ibm.db2.jcc .b.gb.e(gb.java :96)
    at com.ibm.db2.jcc .b.w.e(w.java:8 3)
    at com.ibm.db2.jcc .b.vb.i(vb.java :164)
    at com.ibm.db2.jcc .c.fg.q(fg.java :1311)
    at com.ibm.db2.jcc .c.gg.d(gg.java :2386)
    at com.ibm.db2.jcc .c.hg.V(hg.java :146)
    at com.ibm.db2.jcc .c.t.a(t.java:7 384)
    at com.ibm.db2.jcc .c.t.a(t.java:5 974)
    at com.ibm.db2.jcc .c.t.getTables( t.java:5885)
    ...

    Comment

    • docdiesel
      Recognized Expert Contributor
      • Aug 2007
      • 297

      #3
      Hi,

      I'm not a java programmer, but I may offer a workaround from DB2 side. To get a list of all non-system tables you may query the following sql statement:
      Code:
      select
        creator,name
      from
        sysibm.systables
      where creator not like 'SYS%' ;
      This gives you the schema and the tablename. If you'd like to get the system tables as well, then just forget about the WHERE clause.

      Regards,

      Bernd

      Comment

      Working...