import com.jacob.com.*;
import com.jacob.activeX.*;
public class Lesson002
{
public static void main(String[] args) {
ActiveXComponent cn = new ActiveXComponent("ADODB.Connection");
try {
Dispatch.call(cn ,"Open", "xxxx", "yyyy", "zzzz");
StringBuffer sb = new StringBuffer();
sb.append("select\n");
sb.append(" A.TABLESPACE_NAME\n");
sb.append(", A.TABLE_NAME\n");
sb.append(", C.COMMENTS TABLE_COMMENTS\n");
sb.append(", B.COLUMN_ID\n");
sb.append(", B.COLUMN_NAME\n");
sb.append(", D.COMMENTS COLUMN_COMMENTS \n");
sb.append(", B.DATA_TYPE\n");
sb.append(", B.DATA_LENGTH\n");
sb.append(", B.DATA_PRECISION\n");
sb.append(", B.DATA_SCALE\n");
sb.append(", B.NULLABLE\n");
sb.append("from\n");
sb.append(" USER_ALL_TABLES A\n");
sb.append("left join\n");
sb.append(" USER_TAB_COMMENTS C\n");
sb.append("on\n");
sb.append(" C.TABLE_NAME = A.TABLE_NAME\n");
sb.append("inner join\n");
sb.append(" USER_TAB_COLUMNS B\n");
sb.append("on \n");
sb.append(" B.TABLE_NAME = A.TABLE_NAME\n");
sb.append("left join\n");
sb.append(" USER_COL_COMMENTS D\n");
sb.append("on\n");
sb.append(" D.TABLE_NAME = B.TABLE_NAME\n");
sb.append(" and D.COLUMN_NAME = B.COLUMN_NAME\n");
sb.append("order by\n");
sb.append(" A.TABLE_NAME\n");
sb.append(", B.COLUMN_ID\n");
ActiveXComponent rs = new ActiveXComponent("ADODB.Recordset");
Dispatch.put(rs, "Source", sb.toString());
Dispatch.put(rs, "ActiveConnection", cn);
Dispatch.put(rs, "CursorType", 0);
Dispatch.put(rs, "LockType" , 1);
Dispatch.call(rs ,"Open");
String t = "true";
String eof = Dispatch.get(rs, "EOF").toString();
while (!eof.equals(t)) {
Dispatch fields = Dispatch.get(rs, "Fields").toDispatch();
int count = Integer.parseInt(Dispatch.get(fields, "Count").toString());
for (int i=0;i<count;i++) {
Dispatch fd = Dispatch.call(fields, "Item", i).toDispatch();
System.out.print(Dispatch.call(fd, "Value").toString());
System.out.print('\t');
}
System.out.println();
Dispatch.call(rs, "MoveNext");
eof = Dispatch.get(rs, "EOF").toString();
}
Dispatch.call(rs ,"Close");
Dispatch.call(cn ,"Close");
} catch (Exception e) {
e.printStackTrace();
} finally {
ComThread.Release();
}
}
}