java - 如何将从两个表中检索的数据存储到 java/servlet/jsp 中的另一个表中

标签 java mysql jsp servlets jdbc

我有这三个表:

  • users:存储注册到我的站点的用户的详细信息。
  • events:存储在 Technovision 节上举行的 Activity 的详细信息。
  • registered_users:存储注册事件的用户的详细信息。

当有人点击“注册”按钮时,它应该通过链接( anchor 标记)将参数user_id 传递给名为RegisterServlet 的servlet。

RegisterServlet 中,我想从 users 表和 events 表中检索数据,以便我可以将组合的数据列存储到 registered_users 表。

我试过这样做,但在某些难以弄清楚的部分失败了。

如果有人能在这种情况下帮助我,那就太好了。

 <a href="/RegisterEvent?id=<%=Integer.parseInt(resultSet.getString("event_id")) %>">Register</a>

上面是我在 JSP 中使用链接标记将 event_id 传递给 servlet 的代码(用户单击的按钮)。

RegisterServlet.java

package com.event;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.io.*;
import java.util.*;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;

public class RegisterEvent extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        int i1;

        HttpSession session = request.getSession();
        String username = (String) session.getAttribute("uname");

        String event_id = request.getParameter("id");

        String fname, lname, email, colgname, event_name;
        int contact;

        try {

            //loading drivers for mysql
            Class.forName("com.mysql.jdbc.Driver");

            //creating connection with the database 
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/technovision", "root", "root");

            String sql1 = "SELECT * FROM `users` WHERE `username`=?";

            PreparedStatement ps = con.prepareStatement(sql1);

            ps.setString(1, username);

            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                fname = rs.getString("fname");
                lname = rs.getString("lname");
                email = rs.getString("emailid");
                contact = rs.getInt("mobile");
                colgname = rs.getString("colgname");
            }

            String sql2 = "SELECT event_name FROM events WHERE event_id=?";

            PreparedStatement ps1 = con.prepareStatement(sql2);

            ps1.setInt(1, Integer.parseInt(event_id));

            ResultSet rs1 = ps1.executeQuery();

            while (rs1.next()) {
                event_name = rs1.getString("event_name");
            }

            String sql3 = "INSERT INTO registered_users(`fname`,`lname`,`email`,`contact`,`college_name`,`event_name`) values (?,?,?,?,?,?)";

            PreparedStatement ps3 = con.prepareStatement(sql3);

            ps3.setString(1, fname);
            ps3.setString(2, lname);
            ps3.setString(3, email);
            ps3.setInt(4, contact);
            ps3.setString(5, colgname);
            ps3.setString(6, event_name);

            i1 = ps3.executeUpdate();

            if (i1 > 0) {
                response.sendRedirect("register-success.jsp");
            }

        } catch (Exception se) {
            System.out.println(se);
        }

    }
}

最佳答案

你得到这个错误是因为你没有设置你的属性,所以你应该使用这个:

String fname = "", lname = "", email = "", colgname = "", event_name = "";

代替这个:

String fname, lname, email, colgname, event_name;

因为您在 while(){...} 中使用它们,所以您应该初始化它们

关于java - 如何将从两个表中检索的数据存储到 java/servlet/jsp 中的另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42137660/

相关文章:

php - Cron 检查大型 MySQL 数据库中的日期

Java IE 提供旧的 HTTP Servlet session 对象

java - jqgrid:更改选择的值

java - eclipse vm 参数中使用的字符编码是什么?

java - 尝试找到带有循环的数学函数之和的分辨率(java)

mysql - 从表中选择其他表中最有效的方式

mysql 和之间的常量

java - 从 Citrix session 中运行的 Java 应用程序,如何知道客户端工作站是否空闲?

Java catch block ,捕获的异常不是最终的

javascript - 从查询字符串中获取参数不起作用...Javascript