我有这三个表:
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/