2013-06-13 3 views
-1

먼저 두 개의 문자열 (등록 ID 및 사용자 이름)이 있습니다. 이 두 문자열은 연결됩니다. 내가 CONCATENATE 문자열 getStudentUser 얻을두 문자열 사이의 특정 문자열을 식별하는 방법

public ArrayList getStudentUser(int check,int userid,int mgmtid) 
{ 
    ArrayList companyList = new ArrayList(); 
    Session session = null; 
    PreparedStatement pst = null; 
    ResultSet rst = null; 
    try { 
    session = HibernateUtil.getSession(); 
    if(check==1){ 
     String query = "select a.firstname,a.lastName,b.RegistarionId from t_vs_users a inner join t_vs_userdetails b on b.UserId=a.User_ID where a. RoleId=5 and SourceId=? and a.User_ID not in (?)"; 
     pst = session.connection().prepareStatement(query); 
     pst.setInt(1, mgmtid); 
     pst.setInt(2, userid); 
     rst = pst.executeQuery(); 
     while(rst.next()) { 
      companyList.add(rst.getString("firstname")+""+(rst.getString("lastName"))+","+rst.getString("RegistarionId")); 
     } 
    } else { 
     String query = "select a.firstname,a.lastName,b.RegistarionId from t_vs_users a inner join t_vs_userdetails b on b.UserId=a.User_ID where a. RoleId=5 and SourceId=? and a.User_ID not in (?)"; 
     pst = session.connection().prepareStatement(query); 
     pst.setInt(1, mgmtid); 
     pst.setInt(2, userid); 
     rst = pst.executeQuery(); 
     while(rst.next()) { 
      companyList.add(rst.getString("RegistarionId")+","+(rst.getString("firstname"))+""+rst.getString("lastName")); 
     } 
    } 
    }catch(Exception e) 
    { 
    e.printStackTrace(); 
    } 
    return companyList; 
} 

public boolean checkIfNumber(String in) { 
     try { 
      Integer.parseInt(in); 
     } catch (NumberFormatException ex) { 
      return false; 
     } 
     return true; 
} 

하지만 난 단지 등록 ID 방법을 원하는 : 시간의 사용자 이름이 동일하지만 그렇게

이 코드를 등록 ID가 다르기 때문에

이유는 두 문자열을 연결 분할 할

+1

예상 결과와 예제를 추가해주세요. –

답변

2

이미 쿼리와는 별도의 값이 있습니다. 이 값을 가져 가면서 String으로 연결하고이를 List으로 반환해야한다고 주장했기 때문에이 질문을해야합니다.

companyList.add(rst.getString("firstname")+""+(rst.getString("lastName"))+","+rst.getString("RegistarionId")); 

나는 더 나은 솔루션이 어떤 종류의 객체를 생성 별도의 데이터 멤버로 값을 넣어 대신 String의 해당 인스턴스의 List을 반환하는 것입니다 생각합니다.

당신은 최대 절전 모드를 사용하고 있습니다. 그것은 ORM 솔루션 인 Object-Relational Mapping입니다. 당신의 물건은 어디에 있습니까? 나는 최대 절전 모드를 버리거나 객체를 작성하기 시작할 것이다. 게시 한 코드에서 많은 이점을 얻지 못합니다.

String은 무엇이든 좋은 추상화가 아닙니다. 그것은 원시적 인 것 이상입니다. 프리미티브가 아닌 객체 측면에서 생각하기 시작하면 더 나은 코드를 작성하게됩니다.

: 당신이 그 쉼표로 구분 된 문자열을 분할하는 split() 기능을 사용해야하는 경우,

package persistence; 

public interface StudentDao { 
    List<Student> find(); 
    Student find(Long id); 
    List<Student> find(String lastName); 
} 

그러나 :

package model; 

public class Student { 
    private Long id; 
    private String firstName; 
    private String lastName; 
    // Add the rest 
} 

그리고 DAO : 여기

는 그 모델 객체에 시작입니다
String [] tokens = result.split(","); 

ID가 어디에 있는지 파악해야합니다.

첫 번째 쿼리 후와 마찬가지로 쉼표를 잊어 버린 경우에는 작동하지 않습니다. 나는 오타라고 생각할 것이다.

여기에도 StringBuilder을 권하고 싶습니다.

관련 문제