2017-09-07 3 views
0

MYSQL 데이터베이스 탭에서 일부 데이터를 선택하여 다른 MYSQL 데이터베이스 테이블에 삽입하려고했습니다.테이블에서 선택하여 다른 테이블에 삽입

이 내 서블릿 코드

여기
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 

    PrintWriter out = response.getWriter(); 

    String name = request.getParameter("name"); 

    ArrayList al = null; 

    int size = 0; 
    size = AcceptDao.getData(name); 

    if (size>0) { 
     out.println("<script type=\"text/javascript\">"); 
     out.println("alert('Successfully Employee Added');"); 
     out.println("</script>"); 
    } else { 
     out.println("<script type=\"text/javascript\">"); 
     out.println("alert('Try Again');"); 
     out.println("</script>"); 
    } 
} 

선택 할 데이터를 삽입하는 내 자바 코드입니다.

public static int getData(String Uname) { 
    ArrayList al = null; 
    int status = 0; 
    String name = null; 
    String role = null; 
    String pass = null; 
    try { 
     Connection con = ConnectionProvider.getCon(); 
     String query = "SELECT noty_name,noty_user_role,noty_pass FROM notification WHERE noty_name='" + Uname + "'"; 

     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery(query); 
     al = new ArrayList(); 

     while (rs.next()) { 
      name = rs.getString("noty_name"); 
      role = rs.getString("noty_user_role"); 
      pass = rs.getString("noty_pass"); 

     } 

      PreparedStatement ps = con.prepareStatement("INSERT INTO employee (name,user_role,pass) values(?,?,?)"); 
      ps.setString(1, name); 
      ps.setString(2, role); 
      ps.setString(3, pass); 
      status = ps.executeUpdate(); 
    } catch (Exception e) { 
    } 
    return status; 
} 

이것은 제대로 작동하지 않습니다. 이 코드는 선택 및 삽입을 수행하지 않습니다. 이 코드의 잘못된 점은 무엇입니까?

+0

당신이 오류를 받고 다음은이를 사용할 수 있습니까? 'catch' 블록에서'e.printStackTrace()'를 사용하면 예외가 있는지 확인하십시오. –

답변

0

코드 부분 "삽입"은 루프 밖에 있습니다. 루프의 마지막 데이터 만 삽입됩니다 (사용 가능한 경우). 또한 루프는 while(rs.next) 일 필요가 없습니다. 요청에 고유 한 이름을 전달하는 것이 확실한 경우 if(rs.next) 조건을 사용할 수 있습니다.

while (rs.next()) { 
    name = rs.getString("noty_name"); 
    role = rs.getString("noty_user_role"); 
    pass = rs.getString("noty_pass");  
} 
/* The Below part is wrong */ 
PreparedStatement ps = con.prepareStatement("INSERT INTO employee (name,user_role,pass) values(?,?,?)"); 
ps.setString(1, name); 
ps.setString(2, role); 
ps.setString(3, pass); 
status = ps.executeUpdate(); 

대신 코드

public static int getData(String Uname) { 
ArrayList al = null; 
int status = 0; 
String name = null; 
String role = null; 
String pass = null; 
try { 
    Connection con = ConnectionProvider.getCon(); 
    String query = "SELECT noty_name,noty_user_role,noty_pass FROM notification WHERE name='" + Uname + "'"; 

    Statement st = con.createStatement(); 
    ResultSet rs = st.executeQuery(query); 
    al = new ArrayList(); 

    PreparedStatement ps = con.prepareStatement("INSERT INTO employee (name,user_role,pass) values(?,?,?)"); 

    while (rs.next()) { 
     name = rs.getString("noty_name"); 
     role = rs.getString("noty_user_role"); 
     pass = rs.getString("noty_pass"); 

     ps.setString(1, name); 
     ps.setString(2, role); 
     ps.setString(3, pass); 
     status = ps.executeUpdate(); 
    } 


} catch (Exception e) { 
} 
return status; 

}

+0

나를 도와 주신 분들께 감사드립니다. 해결책을 찾았습니다. :) –

관련 문제