메뉴 건너뛰기

tnt_db

데이타에 한글로 공백이 있는 경우 값을 가져오지 못하고 오류가 발생하는 경우 처리
(오류 : [IBM][SQLServer JDBC Driver]Transliteration failed)

 public Vector getNewEmpInfo(String emp_no) throws Exception{
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        Vector vector = new Vector();
        try{
         pstmt = conn.prepareStatement(sqlGetNewEmpInfo);
         pstmt.setString(1, emp_no);  
        
    rs = pstmt.executeQuery();
   
   while (rs.next())
   {
    Parameters param = new Parameters();
    ResultSetMetaData rsmd = rs.getMetaData();
    for (int i = 0; i < rsmd.getColumnCount(); i++)
    {
     param.setParameter(rsmd.getColumnName(i + 1).toLowerCase(),
       Convert.N2S(rs.getString(rsmd.getColumnName(i + 1))));
     //logger.debug(rsmd.getColumnName(i + 1).toLowerCase() + " ;;;;;" + rs.getString(rsmd.getColumnName(i + 1)));
    }
    vector.addElement(param);    
   }
  }catch(Exception e){   
   throw e;
  }finally{
   if( rs != null) try{ rs.close(); rs=null;} catch(Exception e2){};
   if( pstmt != null) try{ pstmt.close(); pstmt = null; }catch(Exception e2){};
  }
  
  return vector;
 } 


와 같이 값을 가져오는 경우 값에 한글과공백이 있는 경우 오류가 발생할 수 있는데..
이때는

 private String sqlGetNewEmpInfo  = "  " +
         " SELECT  a.empno ,a.kname, a.email,a.gradecodeid, b.teamcode org_cd," + 
         " cast(b.teamname as varchar) org_name, b.startdate org_start_ymd, b.enddate org_end_date, b.depth org_level " +         
         " from KcscOds.dbo.x_usermaster a, " +
         " KcscOds.dbo.x_teammaster b  where a.empno=? " +
         " and a.teamcode = b.teamcode ";

와 같이 cast을 통해서 명시적으로 데이타 타입을 변환시켜주면 오류가 없어진다.
위로