2017-09-07 30 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>"); 
    } 
} 

、ここでは私のJavaコードは、選択をして、データを挿入することです。

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; 
} 

これは正しく動作しません。このコードはselectとinsertを行いません。このコードで何が間違っていますか?

+0

の下にこれを使用する、あなたはすべてのエラーを取得していますか? 'catch'ブロックで' e.printStackTrace() 'を使うと、例外があるかどうか確認してください。 –

答えて

0

"insert"のコード部分がループの外側にあることに注意してください。したがって、ループ内の最後のデータのみが挿入されます(使用可能な場合)。 さらに、ループは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

私を助けてくれてありがとう、ありがとう。私は解決策を見つけた。 :) –

関連する問題