==================================
ResultSetMetaData 인터페이스
==================================
목 적
ResultSet의 형태를 미리 알 수 없거나 다양한 ResultSet을 처리 하는데 사용
☞ 메타 데이터란? 실제 Data는 아니지만 Data의 설명을 위한 정보 데이터로서 컬럼이름, type, Max size값 들이 이에 해당한다.
ResultSet의 각 열에 대한 자료형 및 기타 정보를 얻기 위한 메쏘드 제공
ResultSet 인터페이스의 ResultSetMetaData ResultSetMetaDate rsmd = rs.getMetaData()
열의 개수
int getColumnCount()
열에 대한 정보
String getColumnName(int column)
String getColumnLabel(int column)
열의 제목을 출력하는 데 적절한 제목
int getColumnDisplaySize(int column)
열을 문자열로 출력하기 위한 최대 문자 수
int getColumnType(int column)
열의 SQL Type을 돌려줌
String getColumnTypeName(int column)
int isNullable(int column)
SQL NULL값을 설정할 수 있는지 여부.
boolean isCurrency(int column)
boolean isSigned(int column)
int getPrecision(int column)
boolean isReadOnly(int column)
boolean isDifinitelyWritable(int column)
boolean isWritable(int column)
boolean isSearchable(int column)
boolean isAutoIncrement(int column)
기타 정보
String getTableName(int column)
열 column이 속하는 테이블의 이름
String getCatalogName(int column)
String getSchemaName(int column)
--------------------------------------
ResultSetMetaData 예제(MetaData.java)
---------------------------------------
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MetaData extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
res.setContentType("text/html; charset=euc-kr");
PrintWriter out = res.getWriter();
StringBuffer buffer = new StringBuffer();
try { // 오라클 드라이버를 Load 한다
Class.forName("oracle.jdbc.driver.OracleDriver");
// 데이타 베이스에 접속을 한다.
con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ahah", "scott", "tiger");
// Statement object를 생성한다.
stmt = con.createStatement();
// ResultSet을 얻기위해 SQL query를 실행한다.
if (stmt.execute("SELECT NAME, AGE FROM EMPLOYEES")) {
//ResultSet이 있는경우, SQL문장이 하나이상의 결과?이 있으면 True
rs = stmt.getResultSet(); //갱신된 Count를 얻으면 false
rsmd = rs.getMetaData();
int numCols = rsmd.getColumnCount();
buffer.append("컬럼갯수 --->"+numCols+"<br>");
buffer.append("------------ResultSetMetaData Method-------------<br>");
for (int i=1;i <= numCols ; i++ ) {
buffer.append("isSearchable("+i+") ---> " + rsmd.isSearchable(i) + "<br>");
buffer.append("getCatalogName("+i+") ---> " + rsmd.getCatalogName(i) + "<br>");
buffer.append("getColumnLabel("+i+") ---> " + rsmd.getColumnLabel(i) + "<br>");
buffer.append("getColumnName("+i+") ---> " + rsmd.getColumnName(i) + "<br>");
buffer.append("getColumnType("+i+") ---> " + rsmd.getColumnType(i) + "<br>");
buffer.append("getColumnTypeName("+i+") ---> " + rsmd.getColumnTypeName(i) + "<br>");
buffer.append("getColumnDisplaySize("+i+") ---> " + rsmd.getColumnDisplaySize(i) + "<br>");
buffer.append("getTableName("+i+") ---> " + rsmd.getTableName(i) + "<br>");
buffer.append("getSchemaName("+i+") ---> " + rsmd.getSchemaName(i) + "<br>");
buffer.append("isNullable("+i+") ---> " + rsmd.isNullable(i) + "<br>"); buffer.append("isSigned("+i+") ---> " + rsmd.isSigned(i) + "<br>");
buffer.append("isReadOnly("+i+") ---> " + rsmd.isReadOnly(i) + "<br>");
buffer.append("isWritable("+i+") ---> " + rsmd.isWritable(i) + "<br>");
buffer.append("isAutoIncrement("+i+") ---> " + rsmd.isAutoIncrement(i) + "<br>");
}
buffer.append("-------------------------------------------------<br><br>");
// 결과 출력
buffer.append("<html><head><title>ResultSetMetaData예제 </title></head><body><table><TR>");
for (int i=1;i <= numCols ; i++ ) { buffer.append("<TH>"+rsmd.getColumnLabel(i));
}
buffer.append("</tr>\n");
while(rs.next()) {
buffer.append("<TR>");
for (int i=1; i <= numCols ;i++ ) {
buffer.append("<TD>");
Object obj = rs.getObject(i);
if (obj != null) buffer.append(obj.toString());
else buffer.append(" ");
buffer.append("</TD>");
}
buffer.append("</TR>\n");
}
buffer.append("</TABLE></BODY></HTML>");
}
out.println(buffer.toString());
}
catch(ClassNotFoundException e) {
out.println("Couldn't load database driver: " + e.getMessage());
}
catch(SQLException e) {
out.println("SQLException caught: " + e.getMessage());
}
finally {
// 언제나 데이타 베이스 연결을 종료한다.
try {
if (con != null) con.close();
}
catch (SQLException ignored) { }
}
}
}
ResultSetMetaData 인터페이스
==================================
목 적
ResultSet의 형태를 미리 알 수 없거나 다양한 ResultSet을 처리 하는데 사용
☞ 메타 데이터란? 실제 Data는 아니지만 Data의 설명을 위한 정보 데이터로서 컬럼이름, type, Max size값 들이 이에 해당한다.
ResultSet의 각 열에 대한 자료형 및 기타 정보를 얻기 위한 메쏘드 제공
ResultSet 인터페이스의 ResultSetMetaData ResultSetMetaDate rsmd = rs.getMetaData()
열의 개수
int getColumnCount()
열에 대한 정보
String getColumnName(int column)
String getColumnLabel(int column)
열의 제목을 출력하는 데 적절한 제목
int getColumnDisplaySize(int column)
열을 문자열로 출력하기 위한 최대 문자 수
int getColumnType(int column)
열의 SQL Type을 돌려줌
String getColumnTypeName(int column)
int isNullable(int column)
SQL NULL값을 설정할 수 있는지 여부.
boolean isCurrency(int column)
boolean isSigned(int column)
int getPrecision(int column)
boolean isReadOnly(int column)
boolean isDifinitelyWritable(int column)
boolean isWritable(int column)
boolean isSearchable(int column)
boolean isAutoIncrement(int column)
기타 정보
String getTableName(int column)
열 column이 속하는 테이블의 이름
String getCatalogName(int column)
String getSchemaName(int column)
--------------------------------------
ResultSetMetaData 예제(MetaData.java)
---------------------------------------
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MetaData extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
res.setContentType("text/html; charset=euc-kr");
PrintWriter out = res.getWriter();
StringBuffer buffer = new StringBuffer();
try { // 오라클 드라이버를 Load 한다
Class.forName("oracle.jdbc.driver.OracleDriver");
// 데이타 베이스에 접속을 한다.
con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ahah", "scott", "tiger");
// Statement object를 생성한다.
stmt = con.createStatement();
// ResultSet을 얻기위해 SQL query를 실행한다.
if (stmt.execute("SELECT NAME, AGE FROM EMPLOYEES")) {
//ResultSet이 있는경우, SQL문장이 하나이상의 결과?이 있으면 True
rs = stmt.getResultSet(); //갱신된 Count를 얻으면 false
rsmd = rs.getMetaData();
int numCols = rsmd.getColumnCount();
buffer.append("컬럼갯수 --->"+numCols+"<br>");
buffer.append("------------ResultSetMetaData Method-------------<br>");
for (int i=1;i <= numCols ; i++ ) {
buffer.append("isSearchable("+i+") ---> " + rsmd.isSearchable(i) + "<br>");
buffer.append("getCatalogName("+i+") ---> " + rsmd.getCatalogName(i) + "<br>");
buffer.append("getColumnLabel("+i+") ---> " + rsmd.getColumnLabel(i) + "<br>");
buffer.append("getColumnName("+i+") ---> " + rsmd.getColumnName(i) + "<br>");
buffer.append("getColumnType("+i+") ---> " + rsmd.getColumnType(i) + "<br>");
buffer.append("getColumnTypeName("+i+") ---> " + rsmd.getColumnTypeName(i) + "<br>");
buffer.append("getColumnDisplaySize("+i+") ---> " + rsmd.getColumnDisplaySize(i) + "<br>");
buffer.append("getTableName("+i+") ---> " + rsmd.getTableName(i) + "<br>");
buffer.append("getSchemaName("+i+") ---> " + rsmd.getSchemaName(i) + "<br>");
buffer.append("isNullable("+i+") ---> " + rsmd.isNullable(i) + "<br>"); buffer.append("isSigned("+i+") ---> " + rsmd.isSigned(i) + "<br>");
buffer.append("isReadOnly("+i+") ---> " + rsmd.isReadOnly(i) + "<br>");
buffer.append("isWritable("+i+") ---> " + rsmd.isWritable(i) + "<br>");
buffer.append("isAutoIncrement("+i+") ---> " + rsmd.isAutoIncrement(i) + "<br>");
}
buffer.append("-------------------------------------------------<br><br>");
// 결과 출력
buffer.append("<html><head><title>ResultSetMetaData예제 </title></head><body><table><TR>");
for (int i=1;i <= numCols ; i++ ) { buffer.append("<TH>"+rsmd.getColumnLabel(i));
}
buffer.append("</tr>\n");
while(rs.next()) {
buffer.append("<TR>");
for (int i=1; i <= numCols ;i++ ) {
buffer.append("<TD>");
Object obj = rs.getObject(i);
if (obj != null) buffer.append(obj.toString());
else buffer.append(" ");
buffer.append("</TD>");
}
buffer.append("</TR>\n");
}
buffer.append("</TABLE></BODY></HTML>");
}
out.println(buffer.toString());
}
catch(ClassNotFoundException e) {
out.println("Couldn't load database driver: " + e.getMessage());
}
catch(SQLException e) {
out.println("SQLException caught: " + e.getMessage());
}
finally {
// 언제나 데이타 베이스 연결을 종료한다.
try {
if (con != null) con.close();
}
catch (SQLException ignored) { }
}
}
}
기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… | 12-27 | 2250 | ||
[채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1617 | ||
53 | [평일주간100%환급]Spring,JAVA,JSP,안드로이드,C#닷넷,SQL,튜닝… | 03-15 | 1411 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 1530 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 1768 | |
50 | [기업100%환급]개발자를위한스프링,마이바티스,하이버네이트(스… | 01-31 | 1219 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 | 01-19 | 1512 | |
48 | [평일주간,평일야간,주말]안드로이드개발자과정 | 01-11 | 1343 | |
47 | [평일야간,주말주간,주말야간]JAVA,Network&JSP&Spring,MyBatis,… | 01-03 | 1879 | |
46 | 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… | 12-27 | 2250 | |
45 | [기업100%환급]자바웹개발기초과정(JAVA,JDBC,JSP,Servlet,Aajx,… | 12-19 | 1617 | |
44 | [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… | 12-14 | 1588 | |
43 | [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1617 | |
42 | [주말주간]자바&웹,jQUERY,스프링프레임워크 | 12-09 | 1291 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1511 | |
40 | [기업100%환급]자바기초&안드로이드개발자과정(Android전액환급… | 12-01 | 1693 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1162 |
댓글 없음:
댓글 쓰기