001: /* Copyright 2001 The JA-SIG Collaborative. All rights reserved.
002: * See license distributed with this file and
003: * available online at http://www.uportal.org/license.html
004: */
005:
006: package org.jasig.portal.tools;
007:
008: import java.sql.Connection;
009: import java.sql.DatabaseMetaData;
010: import java.sql.ResultSet;
011: import java.sql.SQLException;
012: import java.sql.Statement;
013:
014: import org.jasig.portal.RDBMServices;
015: import org.springframework.dao.DataAccessException;
016:
017: /**
018: * Title: DbTest
019: * Description: Displays database metadata information
020: * Company:
021: * @author John Fereira
022: * @version $Revision: 35664 $
023: */
024:
025: public class DbTest {
026:
027: public static void main(String[] args) {
028:
029: RDBMServices.setGetDatasourceFromJndi(false); /*don't try jndi when not in web app */
030:
031: Connection con = null;
032: try {
033: con = RDBMServices.getConnection();
034:
035: printInfo(con);
036: } catch (DataAccessException dae) {
037: // we know this was thrown by RDBMServices.getConnection().
038: System.err.println("Unable to get a database connection");
039: return;
040: } catch (SQLException e) {
041: e.printStackTrace();
042: } finally {
043: try {
044: if (con != null)
045: RDBMServices.releaseConnection(con);
046: } catch (Exception e) {
047: }
048: }
049: }//end main
050:
051: private static void printInfo(Connection conn) throws SQLException {
052:
053: DatabaseMetaData dbMetaData = conn.getMetaData();
054:
055: String dbName = dbMetaData.getDatabaseProductName();
056: String dbVersion = dbMetaData.getDatabaseProductVersion();
057: String driverName = dbMetaData.getDriverName();
058: String driverVersion = dbMetaData.getDriverVersion();
059: String driverClass = RDBMServices.getJdbcDriver();
060: String url = RDBMServices.getJdbcUrl();
061: String user = RDBMServices.getJdbcUser();
062:
063: boolean supportsANSI92EntryLevelSQL = dbMetaData
064: .supportsANSI92EntryLevelSQL();
065: boolean supportsANSI92FullSQL = dbMetaData
066: .supportsANSI92FullSQL();
067: boolean supportsBatchUpdates = dbMetaData
068: .supportsBatchUpdates();
069: boolean supportsColumnAliasing = dbMetaData
070: .supportsColumnAliasing();
071: boolean supportsCoreSQLGrammar = dbMetaData
072: .supportsCoreSQLGrammar();
073: boolean supportsExtendedSQLGrammar = dbMetaData
074: .supportsExtendedSQLGrammar();
075: boolean supportsExpressionsInOrderBy = dbMetaData
076: .supportsExpressionsInOrderBy();
077: boolean supportsOuterJoins = dbMetaData.supportsOuterJoins();
078: boolean supportsFullOuterJoins = dbMetaData
079: .supportsFullOuterJoins();
080: boolean supportsLimitedOuterJoins = dbMetaData
081: .supportsLimitedOuterJoins();
082:
083: boolean supportsMultipleTransactions = dbMetaData
084: .supportsMultipleTransactions();
085: boolean supportsOpenCursorsAcrossCommit = dbMetaData
086: .supportsOpenCursorsAcrossCommit();
087: boolean supportsOpenCursorsAcrossRollback = dbMetaData
088: .supportsOpenCursorsAcrossRollback();
089: boolean supportsOpenStatementsAcrossCommit = dbMetaData
090: .supportsOpenStatementsAcrossCommit();
091: boolean supportsOpenStatementsAcrossRollback = dbMetaData
092: .supportsOpenStatementsAcrossRollback();
093:
094: boolean supportsOrderByUnrelated = dbMetaData
095: .supportsOrderByUnrelated();
096: boolean supportsPositionedDelete = dbMetaData
097: .supportsPositionedDelete();
098:
099: boolean supportsSelectForUpdate = dbMetaData
100: .supportsSelectForUpdate();
101: boolean supportsStoredProcedures = dbMetaData
102: .supportsStoredProcedures();
103: boolean supportsTransactions = dbMetaData
104: .supportsTransactions();
105: boolean supportsUnion = dbMetaData.supportsUnion();
106: boolean supportsUnionAll = dbMetaData.supportsUnionAll();
107:
108: int getMaxColumnNameLength = dbMetaData
109: .getMaxColumnNameLength();
110: int getMaxColumnsInIndex = dbMetaData.getMaxColumnsInIndex();
111: int getMaxColumnsInOrderBy = dbMetaData
112: .getMaxColumnsInOrderBy();
113: int getMaxColumnsInSelect = dbMetaData.getMaxColumnsInSelect();
114: int getMaxColumnsInTable = dbMetaData.getMaxColumnsInTable();
115: int getMaxConnections = dbMetaData.getMaxConnections();
116: int getMaxCursorNameLength = dbMetaData
117: .getMaxCursorNameLength();
118: int getMaxIndexLength = dbMetaData.getMaxIndexLength();
119: int getMaxRowSize = dbMetaData.getMaxRowSize();
120: int getMaxStatements = dbMetaData.getMaxStatements();
121: int getMaxTableNameLength = dbMetaData.getMaxTableNameLength();
122: int getMaxTablesInSelect = dbMetaData.getMaxTablesInSelect();
123: int getMaxUserNameLength = dbMetaData.getMaxUserNameLength();
124:
125: String getSearchStringEscape = dbMetaData
126: .getSearchStringEscape();
127: //String getStringFunctions = dbMetaData.getStringFunctions();
128: //String getSystemFunctions = dbMetaData.getSystemFunctions();
129: //String getTimeDateFunctions = dbMetaData.getTimeDateFunctions();
130:
131: ResultSet getTableTypes = null;
132: ResultSet getTypeInfo = null;
133:
134: System.out.println("Database name: '" + dbName + "'");
135: System.out.println("Database version: '" + dbVersion + "'");
136: System.out.println("Driver name: '" + driverName + "'");
137: System.out.println("Driver version: '" + driverVersion + "'");
138: System.out.println("Driver class: '" + driverClass + "'");
139: System.out.println("Connection URL: '" + url + "'");
140: System.out.println("User: '" + user + "'");
141:
142: System.out.println("supportsANSI92EntryLevelSQL: "
143: + supportsANSI92EntryLevelSQL);
144: System.out.println("supportsANSI92FullSQL: "
145: + supportsANSI92FullSQL);
146:
147: System.out.println("supportsCoreSQLGrammar: "
148: + supportsCoreSQLGrammar);
149: System.out.println("supportsExtendedSQLGrammar: "
150: + supportsExtendedSQLGrammar);
151:
152: System.out.println("supportsTransactions: "
153: + supportsTransactions);
154:
155: System.out.println("supportsMultipleTransactions: "
156: + supportsMultipleTransactions);
157:
158: System.out.println("supportsOpenCursorsAcrossCommit: "
159: + supportsOpenCursorsAcrossCommit);
160: System.out.println("supportsOpenCursorsAcrossRollback: "
161: + supportsOpenCursorsAcrossRollback);
162: System.out.println("supportsOpenStatementsAcrossCommit: "
163: + supportsOpenStatementsAcrossCommit);
164: System.out.println("supportsOpenStatementsAcrossRollback: "
165: + supportsOpenStatementsAcrossRollback);
166:
167: System.out.println("supportsStoredProcedures: "
168: + supportsStoredProcedures);
169:
170: System.out.println("supportsOuterJoins: " + supportsOuterJoins);
171: System.out.println("supportsFullOuterJoins: "
172: + supportsFullOuterJoins);
173: System.out.println("supportsLimitedOuterJoins: "
174: + supportsLimitedOuterJoins);
175: System.out.println("supportsBatchUpdates: "
176: + supportsBatchUpdates);
177: System.out.println("supportsColumnAliasing: "
178: + supportsColumnAliasing);
179: System.out.println("supportsExpressionsInOrderBy: "
180: + supportsExpressionsInOrderBy);
181:
182: System.out.println("supportsOrderByUnrelated: "
183: + supportsOrderByUnrelated);
184: System.out.println("supportsPositionedDelete: "
185: + supportsPositionedDelete);
186:
187: System.out.println("supportsSelectForUpdate: "
188: + supportsSelectForUpdate);
189:
190: System.out.println("supportsUnion: " + supportsUnion);
191: System.out.println("supportsUnionAll: " + supportsUnionAll);
192: System.out.println("");
193:
194: System.out.println("getMaxColumnNameLength: "
195: + getMaxColumnNameLength);
196: System.out.println("getMaxColumnsInIndex: "
197: + getMaxColumnsInIndex);
198: System.out.println("getMaxColumnsInOrderBy: "
199: + getMaxColumnsInOrderBy);
200: System.out.println("getMaxColumnsInSelect: "
201: + getMaxColumnsInSelect);
202: System.out.println("getMaxColumnsInTable: "
203: + getMaxColumnsInTable);
204: System.out.println("getMaxConnections: " + getMaxConnections);
205: System.out.println("getMaxCursorNameLength: "
206: + getMaxCursorNameLength);
207: System.out.println("getMaxIndexLength: " + getMaxIndexLength);
208: System.out.println("getMaxRowSize: " + getMaxRowSize);
209: System.out.println("getMaxStatements: " + getMaxStatements);
210: System.out.println("getMaxTableNameLength: "
211: + getMaxTableNameLength);
212: System.out.println("getMaxTablesInSelect: "
213: + getMaxTablesInSelect);
214: System.out.println("getMaxUserNameLength: "
215: + getMaxUserNameLength);
216:
217: System.out.println("getSearchStringEscape: "
218: + getSearchStringEscape);
219: //System.out.println("getStringFunctions: "+getStringFunctions);
220: //System.out.println("getSystemFunctions: "+getSystemFunctions);
221: //System.out.println("getTimeDateFunctions: "+getTimeDateFunctions);
222:
223: System.out.println("");
224:
225: Statement stmt = null;
226: String tabletypes = "";
227: String typeinfo = "";
228: try {
229: stmt = conn.createStatement();
230: getTableTypes = dbMetaData.getTableTypes();
231: while (getTableTypes.next()) {
232: tabletypes += getTableTypes.getString(1);
233: tabletypes += ",";
234: }
235: tabletypes = tabletypes.substring(0,
236: tabletypes.length() - 1);
237: System.out.println("Table Types: " + tabletypes);
238:
239: getTypeInfo = dbMetaData.getTypeInfo();
240: while (getTypeInfo.next()) {
241: typeinfo += getTypeInfo.getString(1);
242: typeinfo += ",";
243: }
244: typeinfo = typeinfo.substring(0, typeinfo.length() - 1);
245: System.out.println("SQL Types: " + typeinfo);
246: } catch (SQLException ex) {
247: } finally {
248: try {
249: if (stmt != null)
250: stmt.close();
251: if (getTableTypes != null)
252: getTableTypes.close();
253: if (getTypeInfo != null)
254: getTypeInfo.close();
255: } catch (SQLException e) {
256: }
257: }
258: } // end printInfo
259: }
|