У меня есть эти три таблицы:Как я могу хранить данные, полученные из двух таблиц в другую таблицу в Java/сервлет/JSP
users
: хранит подробности пользователей, зарегистрированных на моем сайте.events
: хранится информация о событиях, которые проводятся на фестивале Technovision.registered_users
: хранит сведения о пользователях, зарегистрированных для события.
Когда кто-то нажимает на кнопку «Регистрация», он должен передать параметр user_id
в сервлет по имени RegisterServlet
через ссылку (якорный тег).
И RegisterServlet
Я хочу, чтобы получить данные из таблицы users
и events
таблицы, так что я могу хранить объединенные столбцы данных в registered_users
таблицы.
Я пробовал это сделать, но в некоторых случаях это трудно понять.
Если кто-то может помочь мне в этом сценарии, это было бы здорово.
<a href="/RegisterEvent?id=<%=Integer.parseInt(resultSet.getString("event_id")) %>">Register</a>
Выше код (кнопка, где пользователь щелкает) Я использовал в JSP, чтобы передать event_id
в сервлет, используя ссылку тега.
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);
}
}
}
Что происходит с этим кодом, а не с вами, что ли? –
Да, его не работает, показывая ошибку в «fname», возможно, не было инициализировано, я предполагаю, что мой запрос sql1 не запущен – raviloop
Вам не кажется, что это соответствующая информация, которую вы должны включить в свой вопрос? BTW: Это действительно базовое знание Java: если вы инициализируете переменную только в 'while'-loop,' if'-statement или что-то еще, что условно выполняется, тогда компилятор даст вам ошибку, которая может не иметь переменную были инициализированы. В этом случае это также указывает на то, что вы забыли случай использования исключения, в котором пользователь не существует ... –