>code>package com.example; import java.sql.*; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; public class DbMapper { public static JsonArray select(String sql) throws Exception{ Connection dbConnection = CommonConstant.getDbConn(); Statement getFromDb = dbConnection.createStatement(); ResultSet rs = getFromDb.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); JsonArray recordsArray = new JsonArray(); int numColumns = rsmd.getColumnCount(); String[] arrColumnNames = new String[numColumns]; int[] columnTypes = new int[numColumns]; for (int i = 0; i < arrColumnNames.length; i++) { arrColumnNames[i] = rsmd.getColumnLabel(i + 1); columnTypes[i] = rsmd.getColumnType(i + 1); /*System.out.print(i + " : "); System.out.print(columnNames[i]); System.out.print(i + " = "); System.out.print(columnTypes[i]); System.out.print("\n"); */ } //JsonPrimitive jsonPrimitiveNull = new JsonPrimitive(null); long startTime = System.currentTimeMillis(); while (rs.next()) { boolean b; long l; double d; float f; String s; JsonObject currentRecord = new JsonObject(); for( int i=0; i<arrColumnNames.length; i++) { String column_name = arrColumnNames[i]; //System.out.println(); //System.out.println("while loop: "+column_name + " : "+ columnTypes[i]); switch (columnTypes[i]) { case Types.BIT: // tiny int 가 비트로 와서 수정함 case Types.TINYINT: l = rs.getInt(i + 1); if (rs.wasNull()) { //jgen.writeNull(); currentRecord.add(column_name,null); } else { //currentRecord.add(column_name,new JsonPrimitive(l)); System.out.println(column_name); System.out.println(l); System.out.println(new JsonPrimitive(l)); currentRecord.add(column_name,new JsonPrimitive(l)); } break; case Types.INTEGER: case Types.SMALLINT: l = rs.getInt(i + 1); if (rs.wasNull()) { //jgen.writeNull(); currentRecord.add(column_name,null); } else { //currentRecord.add(column_name,new JsonPrimitive(l)); currentRecord.add(column_name,new JsonPrimitive(l)); } break; case Types.BIGINT: l = rs.getLong(i + 1); if (rs.wasNull()) { currentRecord.add(column_name,null); } else { currentRecord.add(column_name,new JsonPrimitive(l)); } break; case Types.DECIMAL: case Types.NUMERIC: //jgen.writeNumber(rs.getBigDecimal(i + 1)); rs.getBigDecimal(i + 1); if (rs.wasNull()) { currentRecord.add(column_name,null); }else{ currentRecord.add(column_name,new JsonPrimitive(rs.getBigDecimal(i + 1))); } break; case Types.FLOAT: /* f = rs.getFloat(i + 1); //System.out.println("====================================================================="); //System.out.println(f); //System.out.println("====================================================================="); if (rs.wasNull()) { currentRecord.add(column_name,null); } else { //jgen.writeNumber(d); currentRecord.add(column_name,new JsonPrimitive(f)); } break;*/ case Types.REAL: case Types.DOUBLE: d = rs.getDouble(i + 1); System.out.println(d); if (rs.wasNull()) { currentRecord.add(column_name,null); } else { //jgen.writeNumber(d); currentRecord.add(column_name,new JsonPrimitive(d)); } break; //case Types.NVARCHAR: case Types.VARCHAR: //case Types.LONGNVARCHAR: case Types.LONGVARCHAR: //jgen.writeString(rs.getString(i + 1)); s = rs.getString(i + 1); if (rs.wasNull()) { currentRecord.add(column_name,null); } else { //jgen.writeNumber(d); currentRecord.add(column_name,new JsonPrimitive(s)); } break; case Types.BOOLEAN: b = rs.getBoolean(i + 1); if (rs.wasNull()) { currentRecord.add(column_name,null); } else { //jgen.writeBoolean(b); currentRecord.add(column_name,new JsonPrimitive(b)); } break; case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: //jgen.writeBinary(rs.getBytes(i + 1)); //currentRecord.add(column_name,new JsonPrimitive(""+rs.getBytes(i + 1).toString())); //System.out.println(rs.getString(i + 1)); String str = new String(rs.getBytes(i+1),"UTF-8"); currentRecord.add(column_name,new JsonPrimitive(str)); //currentRecord.add(column_name,new JsonPrimitive(""+rs.getString(i + 1))); break; /* case Types.TINYINT: case Types.SMALLINT: l = rs.getShort(i + 1); if (rs.wasNull()) { currentRecord.add(column_name,null); } else { currentRecord.add(column_name,new JsonPrimitive(l)); } break; */ case Types.DATE: // provider.defaultSerializeDateValue(rs.getDate(i + 1), jgen); Date date = rs.getDate(i + 1); if(rs.wasNull()){ currentRecord.add(column_name,null); }else{ currentRecord.add(column_name,new JsonPrimitive(rs.getDate(i + 1).toString())); } break; case Types.TIMESTAMP: //provider.defaultSerializeDateValue(rs.getTime(i + 1), jgen); Time t1 = rs.getTime(i + 1); if(rs.wasNull()){ currentRecord.add(column_name,null); }else{ currentRecord.add(column_name,new JsonPrimitive(rs.getTime(i + 1).toString())); } break; case Types.BLOB: //Blob blob = rs.getBlob(i+1); /*Blob blob = rs.getBlob("photo"); // materialize BLOB onto client return blob.getBytes(1, (int) blob.length());*/ //byte[] b1 = blob.getBytes(i+1, (int) blob.length()); //System.out.println(b1.toString()); //provider.defaultSerializeValue(blob.getBinaryStream(), jgen); //currentRecord.add(column_name,new JsonPrimitive(b1.toString())); //blob.free(); String str1 = new String(rs.getBytes(i+1),"UTF-8"); currentRecord.add(column_name,new JsonPrimitive(str1)); break; case Types.CLOB: Clob clob = rs.getClob(i+1); //provider.defaultSerializeValue(clob.getCharacterStream(), jgen); currentRecord.add(column_name,new JsonPrimitive(clob.toString())); //clob.free(); break; case Types.ARRAY: throw new RuntimeException("ResultSetSerializer not yet implemented for SQL type ARRAY"); case Types.STRUCT: throw new RuntimeException("ResultSetSerializer not yet implemented for SQL type STRUCT"); case Types.DISTINCT: throw new RuntimeException("ResultSetSerializer not yet implemented for SQL type DISTINCT"); case Types.REF: throw new RuntimeException("ResultSetSerializer not yet implemented for SQL type REF"); case Types.JAVA_OBJECT: default: rs.getObject(i+1); if (rs.wasNull()) { currentRecord.add(column_name,null); }else{ currentRecord.add(column_name,new JsonPrimitive(rs.getObject(i + 1).toString())); } //provider.defaultSerializeValue(rs.getObject(i + 1), jgen); break; } } //System.out.println(currentRecord); recordsArray.add(currentRecord); } long stopTime = System.currentTimeMillis(); long elapsedTime = stopTime - startTime; //System.out.println("select switch :"+elapsedTime); return recordsArray; } }
윈도우 톰캣 네트워크 드라이버 설정(windows tomcat network driver setting) TOMCAT_HOME/conf/server.xml 의 Host 노드 아래 경로 추가 <Context path="/resources" docBase="//192.168.200.100/cifs/pds" /> 서버스 재구동 하면 다음 메시지 뜸 SEVERE [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.beforeStart Exception fixing docBase for context [/resources] java.io.IOException: 사용자 이름 또는 암호가 올바르지 않습니다 at java.io.WinNTFileSystem.canonicalize0(Native Method) at java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:428) at java.io.File.getCanonicalPath(File.java:618) at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:593) at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:744) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:300) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401)...
댓글
댓글 쓰기