簡體   English   中英

從表中選擇並插入另一個表

[英]Select from table and insert into another table

我試圖從MYSQL數據庫選項卡中選擇一些數據,然后將它們插入另一個MYSQL數據庫表中。

這是我的servlet代碼

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

這不能正常工作。 此代碼不會選擇並插入。 此代碼有什么問題。

請注意, “插入”的代碼部分在循環之外。 因此,將僅插入循環中的最后一個數據(如果有)。 而且,不需要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;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM