Hi All,
Here is is an example of a program that reads
a database and gives you information about it...
Enjoy!
Regards,
- DL
import java.net.URL;
import java.sql.*;
import java.util.*;
import java.awt.*;
public class SimpleSelect {
private String url =
"jdbc:odbc:yourDataSourceName";
private String query =
"SELECT * FROM ";
private String driverClassName =
"sun.jdbc.odbc.JdbcOdbcDriver";
private Connection con = null;
private String catalogName = null;
private DatabaseMetaData dma = null;
private Statement stmt = null;
private ResultSet rs = null;
private ResultSetMetaData rsmd = null;
private String keywords = null;
private boolean isReadOnly = false;
private boolean usesLocalFiles = false;
private String driverName = null;
private String selectedTable = null;
private ResultSet tables_rs = null;
private ResultSetMetaData
tables_rsmd = null;
private String tableFields[]=null;
private Vector tableVector =
new Vector();
private String tableNames[] = null;
private String nonMSysTables[] = null;
private Vector v = null;
public void connect() {
try {
loadDriver();
//DriverManager.setLogStream(System.out);
con =
DriverManager.getConnection (
url, "", "");
dma = con.getMetaData ();
catalogName =
con.getCatalog();
isReadOnly = con.isReadOnly();
usesLocalFiles =
dma.usesLocalFiles();
driverName =
dma.getDriverName();
initTableNames();
createStatement();
}
catch(SQLException e) {
print(e);
}
}
public String getSelectedTable() {
return selectedTable;
}
public void createStatement() {
try {
stmt = con.createStatement ();
}
catch(SQLException e) {
print(e);
}
}
public void printKeywords() {
println("Non SL92 keywords:");
println(getKeywords());
}
public String[] getNonMSysTableNames() {
return nonMSysTables;
}
public void initNonMSysTables() {
int n
= tableNames.length -
getNumberOfMSysTables();
nonMSysTables = new String[n];
for (int i=0; i < n; i++) {
nonMSysTables[i]
= tableNames[i+getNumberOfMSysTables()];
}
}
private int getNumberOfMSysTables() {
int k = 0;
for (int i=0; i < tableNames.length; i++)
if (tableNames[i].startsWith("MSys"))
k++;
return k;
}
private void initTableNames() {
try {
tables_rs =
dma.getTables(
null,
null,null,null);
tables_rsmd =
tables_rs.getMetaData();
tableFields =
getColumnNames(tables_rsmd);
while (tables_rs.next())
tableVector.addElement(
tables_rs.getString("TABLE_NAME"));
}
catch(SQLException e) {
print(e);
}
int n = tableVector.size();
tableNames =
new String[n];
for (int i=0; i < n; i++)
tableNames[i]
= (String)
tableVector.elementAt(i);
initNonMSysTables();
}
public String[] getTableNames() {
return tableNames;
}
public void printProductName() {
print("The database product name is:");
println(getProductName());
}
public String getProductName() {
try {
return
dma.getDatabaseProductName();
}
catch (SQLException e) {
print(e);
}
return null;
}
public void printTableTypes() {
println("The table types are:");
ResultSet rs
= getTableTypes();
try {
while (rs.next()) {
String s=rs.getString("TABLE_TYPE");
println(" "+s);
}
}
catch(SQLException e) {
print(e);
}
}
public ResultSet getTableTypes() {
try {
return
dma.getTableTypes();
}
catch (SQLException e) {
print(e);
}
return null;
}
/**
keywords that are not also SQL92 keywords.
*/
public String getKeywords() {
try {
return
dma.getSQLKeywords();
}
catch (SQLException e) {
print(e);
}
return null;
}
private void loadDriver() {
try {
Class.forName (
driverClassName);
}
catch(ClassNotFoundException e) {
println(e);
}
}
public void printInfo() {
printProductName();
println("catalogName="+catalogName);
printTableTypes();
printKeywords();
println("is ReadOnly="+getReadOnly());
println("usesLocalFiles="+getUsesLocalFiles());
println("driverName="+driverName);
println("tableFields=");
print(tableFields);
println("tableNames=");
print(tableNames);
println("number of MSysTables="
+getNumberOfMSysTables());
println("Non MSysTables=");
print(getNonMSysTableNames());
}
public boolean getUsesLocalFiles() {
return usesLocalFiles;
}
public boolean getReadOnly() {
return isReadOnly;
}
public String getCatalogName() {
return catalogName;
}
public String getDriverName() {
return driverName;
}
public void print(Object o) {
System.out.print(o);
}
public void println(Object o) {
System.out.println(o);
}
public void println(String s[]) {
for (int i=0; i < s.length; i++)
System.out.println(s[i]);
}
public void getQuery() {
getQuery("yourTableName");
}
public void getQuery(String _selectedTable) {
selectedTable = _selectedTable;
query =
"SELECT * FROM "+selectedTable;
try {
rs = stmt.executeQuery (query);
rsmd = rs.getMetaData ();
}
catch(SQLException e) {
print(e);
}
}
public void setQuery(String q) {
query = q;
rs = null;
}
public void printDebug() {
try {
checkForWarning (con.getWarnings ());
println("\nConnected to " + dma.getURL());
println("Driver " +
dma.getDriverName());
println("Version " +
dma.getDriverVersion());
println("");
}
catch(SQLException e) {
print(e);
}
}
public void display() {
try {
dispResultSet();
}
catch(SQLException e) {
print(e);
}
}
private void print(SQLException ex) {
println ("\n*** SQLException caught ***\n");
while (ex != null) {
println ("SQLState: " +
ex.getSQLState ());
println ("Message: " + ex.getMessage ());
println ("Vendor: " +
ex.getErrorCode ());
ex = ex.getNextException ();
println ("");
}
// Got some other type of exception. Dump it.
ex.printStackTrace ();
}
public void print(String s[]) {
for (int i=0; i < s.length; i++)
print(s[i]+",");
println("");
}
public void close() {
try {
rs.close();
stmt.close();
con.close();
}
catch(SQLException e) {
print(e);
}
}
public static void main (String args[]) {
SimpleSelect ss
= new SimpleSelect();
ss.connect();
ss.getQuery();
ss.printColumnNames();
ss.printInfo();
//ss.printRows();
ss.close();
}
//-------------------------------------------------------------------
// checkForWarning
// Checks for and displays warnings. Returns true if a warning
// existed
//-------------------------------------------------------------------
private boolean checkForWarning(SQLWarning warn)
throws SQLException {
boolean rc = false;
// If a SQLWarning object was given, display the
// warning messages. Note that there could be
// multiple warnings chained together
if (warn != null) {
println ("\n *** Warning ***\n");
rc = true;
while (warn != null) {
println ("SQLState: " +
warn.getSQLState ());
println ("Message: " +
warn.getMessage ());
println ("Vendor: " +
warn.getErrorCode ());
println ("");
warn = warn.getNextWarning ();
}
}
return rc;
}
public String[] getColumnNames() {
return getColumnNames(rsmd);
}
public String[] getColumnNames(ResultSetMetaData r) {
String s []
= new String[getNumberOfColumns(r)];
try {
for (int i=1; i <= s.length; i++)
s[i-1]=r.getColumnLabel(i);
}
catch(SQLException e) {
print(e);
}
return s;
}
public String[] getColumnNames(ResultSet r) {
ResultSetMetaData
rsd = null;
try {
return
getColumnNames(
r.getMetaData());
}
catch(SQLException e) {
print(e);
}
return null;
}
public Label[] getColumnLabels() {
String s[]
= getColumnNames();
Label l[] = new Label[s.length];
for (int i=0; i < s.length; i++)
l[i]=new Label(s[i]);
return l;
}
public void printNumberOfColumns() {
System.out.println(
getNumberOfColumns());
}
public int getNumberOfColumns() {
return getNumberOfColumns(rsmd);
}
private int getNumberOfColumns(ResultSetMetaData r) {
int i = -1;
try {
i = r.getColumnCount();
}
catch(SQLException e) {
print(e);
}
return i;
}
public void printColumnNames() {
String s[] = getColumnNames();
for (int i=0; i < s.length; i++)
print(s[i]+",");
println("");
}
public String [] getRowAsString() {
int N = getNumberOfColumns();
String s[] = new String[N];
try {
for (int i =0; i < N; i++)
s[i] = rs.getString(i+1);
}
catch(SQLException e) {
print(e);
}
return s;
}
public void printVector() {
for (int i=0; i < v.size(); i++) {
String s[]
= getRowAt(i);
print(s);
}
}
public int getNumberOfRows() {
return v.size();
}
public String[] getRowAt(int i) {
if (v == null) {
println("v is null in simple select");
return null;
}
if (i >= v.size()) i = v.size() -1;
if (i < 0) i = 0;
return (String[])v.elementAt(i);
}
public void printRow() {
String s[]
= getRowAsString();
for (int i=0; i < s.length; i++) {
print(s[i]+", ");
}
println("");
}
/**
Download entire database!
Danger Will Robinson,
Take cover Dr. Smith!!
*/
public Vector getRows() {
if (v != null) return v;
v = new Vector();
while(nextRow())
v.addElement(getRowAsString());
return v;
}
public void printRows() {
while(nextRow())
printRow();
}
public boolean nextRow() {
try {
return rs.next();
}
catch(SQLException e) {
print(e);
return false;
}
}
//-------------------------------------------------------------------
// dispResultSet
// Displays all columns and rows in the given result set
//-------------------------------------------------------------------
private void dispResultSet() throws SQLException {
int i;
printColumnNames();
// Display data, fetching until end of the result set
boolean more = rs.next ();
int numCols = getNumberOfColumns();
while (more) {
// Loop through each column, getting the
// column data and displaying
for (i=1; i<=numCols; i++) {
if (i > 1) print(",");
print(rs.getString(i));
}
println("");
// Fetch the next result set row
more = rs.next ();
}
}
}
|