메타데이터 ?
- 부가적인 정보로, 컬럼명, 컬럼 타입, 컬럼폭, 등을 의미하여 ResultSet에서 얻어온다.
package metaEx;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import db_util.DBConn;
public class Ex001_MetaData {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
try {
conn = DBConn.getConnection();
String sql = "SELECT * FROM score";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
rsmd = rs.getMetaData();
// 컬럼수
int cols = rsmd.getColumnCount();
System.out.println("전체 컬럼 수 : " + cols);
for (int i = 1; i <= cols; i++) {
System.out.print("컬럼명 : " + rsmd.getColumnName(i) + "\t");
System.out.print("컬럼타입명 : " + rsmd.getColumnTypeName(i) + "\t");
System.out.println("컬럼폭 : " + rsmd.getPrecision(i));
}
System.out.println();
// 데이터
// 테이블의 숫자, 날짜 형등은 문자열로 가져올 수 있다.
while (rs.next()) {
for (int i = 1; i <= cols; i++) {
System.out.print(rs.getString(i) + "\t");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e2) {
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e2) {
}
}
}
}
}
package metaEx;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import db_util.DBConn;
public class Ex002_Matadata {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Connection conn = DBConn.getConnection();
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
String sql;
try {
System.out.print("쿼리 ? ");
sql = br.readLine();
sql = sql.trim();
if (!sql.toUpperCase().startsWith("SELECT")) {
System.out.println("SELECT 문만 가능합니다.");
return;
}
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
for (int i = 1; i <= cols; i++) {
System.out.print(rsmd.getColumnName(i) + "\t");
}
System.out.println();
while (rs.next()) {
for (int i = 1; i <= cols; i++) {
System.out.print(rs.getString(i) + "\t");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e2) {
}
}
if (stmt != null) {
try {
stmt.close();
} catch (Exception e2) {
}
}
}
}
}
'쌍용강북교육센터 > 9월' 카테고리의 다른 글
0902_데이터 모델링 및 설계 (0) | 2021.09.03 |
---|---|
0902_Java : JDBC : 자바로 SQLPlus와 비슷한 프로그램 짜기 (0) | 2021.09.02 |
0901_Java : JDBC : Scroll (0) | 2021.09.02 |
0901_Java : JDBC : 자바에서 transaction 처리 (0) | 2021.09.02 |
0901_Java : JDBC : 쿼리실행 (0) | 2021.09.02 |