oracle 

DatabaseMetaData 


COLUMN_DEF 를 가지고 올때 

아래와 같은 에러가 발생하였다 .  


이유를 찾아본결과. 

java.sql.SQLException: 스트림이 이미 종료되었습니다

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)

at oracle.jdbc.driver.LongAccessor.getBytes(LongAccessor.java:166)

at oracle.jdbc.driver.LongAccessor.getString(LongAccessor.java:207)

at oracle.jdbc.driver.T4CLongAccessor.getString(T4CLongAccessor.java:390)

at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:355)

at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1559)



/*

TABLE_CAT

TABLE_SCHEM

CHAR_OCTET_LENGTH

IS_NULLABLE

ORDINAL_POSITION

SQL_DATETIME_SUB

SQL_DATA_TYPE

ORDINAL_POSITION

 

// 조회를 할때 위에 필드가 COLUMN_DEF 보다 위에 있어서 나는 에러였다. 

순서 때문에 에러가 발생 위에 필드들은 COLUMN_DEF 보다 뒤에 get 해야 된다. 그럼 문제 해결. 

*/



ResultSetMetaData rsmd = null;

Connection conn = null;

ResultSet rs=null;

try {

conn = RDBConn.getConnection(dbAlias);

DatabaseMetaData dbmd = conn.getMetaData();

rs = dbmd.getColumns(null, null, tableNm, "%");

rsmd = rs.getMetaData();

int count = rsmd.getColumnCount();

String [] columns_key = new String[count];

for (int i = 1; i <= count; i++) {

columns_key[i - 1] = rsmd.getColumnName(i);

}

LinkedHashMap columns = null;

Reader input = null;

char[] buffer  = null;

int byteRead=-1;

String key  = "";

HashMap tc = null; 

while (rs.next()) {

tc = new HashMap();


/* 어디에 있어서 상관없는 필드들. 

NULLABLE

REMARKS

NUM_PREC_RADIX

DECIMAL_DIGITS

BUFFER_LENGTH

COLUMN_SIZE

TYPE_NAME

DATA_TYPE

COLUMN_NAME

TABLE_NAME

TABLE_SCHEM

TABLE_CAT

*/

tc.put("COLUMN_DEF", rs.getString("COLUMN_DEF"));


/*

TABLE_CAT

TABLE_SCHEM

CHAR_OCTET_LENGTH

IS_NULLABLE

ORDINAL_POSITION

SQL_DATETIME_SUB

SQL_DATA_TYPE

ORDINAL_POSITION

 

// 조회를 할때 위에 필드가 COLUMN_DEF 보다 위에 있어서 나는 에러였다. 

순서 때문에 에러가 발생 위에 필드들은 COLUMN_DEF 보다 뒤에 get 해야 된다. 그럼 문제 해결. 

*/


System.out.println(tc);

}

}catch (SQLException e1) {

e1.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}finally{

RDBConn.release(conn, null ,rs);

}




+ Recent posts