MetaData를 이용하여 데이터베이스 정보 추출(테이블,컬럼정보)
Posted 02 5, 2009 17:50, Filed under: Language/JAVA
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
import java.sql.Connection;
import java.sql.Statement;
import java.sql.*;
public class MetadataTest {
String url = "jdbc:oracle:thin:@192.168.2.22:1521:ora9i";
String query = "SELECT * FROM SCOTT.EMP";
Connection con = null;
Statement stmt = null;
public void metadataTest()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(java.lang.ClassNotFoundException e)
{
System.err.print("ClassNotFoundException : " + e.getMessage());
}
try
{
con = DriverManager.getConnection(url, "scott", "tiger");
System.out.println("Connected to DB ............");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
// 테이블의 메타데이타 정보를 구성하여 ResultSetMetaData 에 저장
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumn = rsmd.getColumnCount();
System.out.println("============================================================");
System.out.println("Number of Columns : " + numberOfColumn);
System.out.println("============================================================");
System.out.println("Column Name | JDBC type | Null Allowed | Read Only ");
System.out.println("============================================================");
for(int i = 1; i <= numberOfColumn; i++)
{
String columnName = rsmd.getColumnName(i);// 필드명
String jdbcType = rsmd.getColumnTypeName(i);// 필드 속성
int isNull = rsmd.isNullable(i); // 필드 Null 허용여부
int jdbcLength = rsmd.getPrecision(i); // 컬럼 length
boolean rOnly = rsmd.isReadOnly(i); // 읽기 전용 여부
System.out.print(columnName);// 필드 명을 출력
for(int j = 0; (columnName.length() + j) < 12; j++)
{
System.out.print(" ");
}
System.out.print(" " + jdbcType + "(" + jdbcLength + ")"); // 필드의 타입을 출력
for(int j = 0; (jdbcType.length() + j) < 12; j++)
{
System.out.print(" ");
}
if(isNull == 0)// 필드의 Null 허용 여부 출력
{
System.out.print(" Not Null ");
}else if(isNull == 1)
{
System.out.print(" Null ");
}else
{
System.out.print(" Unknown ");
}
System.out.println(" " + rOnly);// 읽기 전용 여부 출력
}
stmt.close();
con.close();
System.out.println("Disconnected From DB ..........");
}catch(SQLException e)
{
System.err.print("SQLException : " + e.getMessage());
}
}
public static void main(String[] arr)
{
new MetadataTest().metadataTest();
}
}
/*
출력 결과 :
Connected to DB ............
============================================================
Number of Columns : 8
============================================================
Column Name | JDBC type | Null Allowed | Read Only
============================================================
EMPNO NUMBER(4) Not Null false
ENAME VARCHAR2(10) Null false
JOB VARCHAR2(9) Null false
MGR NUMBER(4) Null false
HIREDATE DATE(0) Null false
SAL NUMBER(7) Null false
COMM NUMBER(7) Null false
DEPTNO NUMBER(2) Null false
Disconnected From DB ..........
*/
import java.sql.Statement;
import java.sql.*;
public class MetadataTest {
String url = "jdbc:oracle:thin:@192.168.2.22:1521:ora9i";
String query = "SELECT * FROM SCOTT.EMP";
Connection con = null;
Statement stmt = null;
public void metadataTest()
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(java.lang.ClassNotFoundException e)
{
System.err.print("ClassNotFoundException : " + e.getMessage());
}
try
{
con = DriverManager.getConnection(url, "scott", "tiger");
System.out.println("Connected to DB ............");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
// 테이블의 메타데이타 정보를 구성하여 ResultSetMetaData 에 저장
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumn = rsmd.getColumnCount();
System.out.println("============================================================");
System.out.println("Number of Columns : " + numberOfColumn);
System.out.println("============================================================");
System.out.println("Column Name | JDBC type | Null Allowed | Read Only ");
System.out.println("============================================================");
for(int i = 1; i <= numberOfColumn; i++)
{
String columnName = rsmd.getColumnName(i);// 필드명
String jdbcType = rsmd.getColumnTypeName(i);// 필드 속성
int isNull = rsmd.isNullable(i); // 필드 Null 허용여부
int jdbcLength = rsmd.getPrecision(i); // 컬럼 length
boolean rOnly = rsmd.isReadOnly(i); // 읽기 전용 여부
System.out.print(columnName);// 필드 명을 출력
for(int j = 0; (columnName.length() + j) < 12; j++)
{
System.out.print(" ");
}
System.out.print(" " + jdbcType + "(" + jdbcLength + ")"); // 필드의 타입을 출력
for(int j = 0; (jdbcType.length() + j) < 12; j++)
{
System.out.print(" ");
}
if(isNull == 0)// 필드의 Null 허용 여부 출력
{
System.out.print(" Not Null ");
}else if(isNull == 1)
{
System.out.print(" Null ");
}else
{
System.out.print(" Unknown ");
}
System.out.println(" " + rOnly);// 읽기 전용 여부 출력
}
stmt.close();
con.close();
System.out.println("Disconnected From DB ..........");
}catch(SQLException e)
{
System.err.print("SQLException : " + e.getMessage());
}
}
public static void main(String[] arr)
{
new MetadataTest().metadataTest();
}
}
/*
출력 결과 :
Connected to DB ............
============================================================
Number of Columns : 8
============================================================
Column Name | JDBC type | Null Allowed | Read Only
============================================================
EMPNO NUMBER(4) Not Null false
ENAME VARCHAR2(10) Null false
JOB VARCHAR2(9) Null false
MGR NUMBER(4) Null false
HIREDATE DATE(0) Null false
SAL NUMBER(7) Null false
COMM NUMBER(7) Null false
DEPTNO NUMBER(2) Null false
Disconnected From DB ..........
*/
"Language / JAVA" 분류의 다른 글
| Java - SimpleFormController - 조건 값에 따른 showForm 페이지 이동 (0) | 2011/11/30 |
| Java - getProperties 사용하여 현재 시스템의 정보를 추출 (0) | 2011/08/07 |
| Java - Jfreechart 패키지 이용 차트만들기 (0) | 2011/01/05 |
| Java - JfreeChart 사용시 한글깨짐(jar 파일 font 수정) (0) | 2011/01/04 |
| Java - Zip 파일 형식 압축및 압축풀기(한글깨짐방지 - jazzlib 사용) (8) | 2010/04/14 |
| Java - compile및 jar 파일 생성 (0) | 2010/04/14 |
| Java - BigDecimal의 필요성 (0) | 2009/10/31 |
| Java - Date, GregorianCalendar, 날자 연산 더하기, 빼기 (0) | 2009/08/17 |
| Java - Commons Net의 FTPClient 사용하여 FTP 접속및 파일 컨트롤 (0) | 2009/08/05 |
| Java - 특수문자 제어 Util (0) | 2009/07/17 |
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
Response :
0 Trackback
,
0 Comment
Trackback URL : http://develop.sunshiny.co.kr/trackback/105