检索数据并插入数据库
在下图中,当用户按下提交按钮时,应用程序将选择的数字插入到数据库中。但它不适用于activityid号码。按提交按钮后,activityid返回null并且返回选择的数字。我该怎么办插入正确activityid数据库检索数据并插入数据库
music.jsp
<table border="1" width="30%" height="30%">
<th><font color='#D18603'>ActivityID</font>
<th><font color='#D18603'>Type</font></th>
<th><font color='#D18603'>Description</font></th>
<th><font color='#D18603'>City</font></th>
<th><font color='#D18603'>Location</font></th>
<th><font color='#D18603'>Date</font></th>
<th><font color='#D18603'>Price</font></th>
<th><font color='#D18603'>Buy</font>
<%
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/users", "users", "123");
Statement st = con.createStatement();
ResultSet rs;
rs = st.executeQuery("select * from activities where type='müzik'");
while (rs.next()) {
out.println("<tr>");
out.println("<td>" + rs.getString("id")+"</td>");
out.println("<td>" + rs.getString("type")+ "</td>");
out.println("<td>" + rs.getString("description")+ "</td>");
out.println("<td>" + rs.getString("city") + "</td>");
out.println("<td>" + rs.getString("location")+ "</td>");
out.println("<td>" + rs.getString("date") + "</td>");
out.println("<td>" + rs.getString("price") + "</td>");
out.println("<td><b><form action='reservations.jsp'><select name='buy'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select><input type='submit' value='Submit'></form></b>");
out.println("</tr>");
}
st.close();
%>
Reservation.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import ="java.sql.*" %>
<%
String username = (String) request.getSession().getAttribute("username");
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/users", "users", "123");
String sorgu = "INSERT INTO reservation(id,username,buy) VALUES ('" + request.getParameter("id") + "', '" + username + "','" + request.getParameter("buy") + "') ";
java.sql.Statement st = con.createStatement();
int rowNum = st.executeUpdate(sorgu);
response.sendRedirect("paypal.html");
st.close();
%>
你需要得到周围每一行中的所有数据的标签,并添加(隐藏)表单标签到每个列,以便所有数据都包含在表单提交中。为了清楚起见,我已经消除了一切,但如何组织形式的标签,以及如何以包括表单提交的“ID”
rs = st.executeQuery("select * from activities where type='müzik'");
while (rs.next()) {
out.println("<tr>");
out.println("<form action='reservations.jsp'>");
out.println("<td>" + rs.getString("id") + "<input type='hidden' name='id' value='" + td.getString("id")+"'></td>");
out.println("<td><input type='submit' value='Submit'></form></b></td>");
out.println("</td></tr>");
}
st.close();
我做了你所说的,但它在数据库中的活动ID仍然为空 – tripley
对不起,我忘了将“name ='id'”添加到输入字段。我纠正了我的答案。但问题是,值提供给db插入jsp页面的参数或数据库中的数据不可用?这是与参数,对不对? – ControlAltDel
谢谢你现在的作品 – tripley
我没有看到您分配一个名称ActivityId列将其作为参数传递给它。 –
是的。这就是问题。我怎样才能做到这一点 ?我搜索了谷歌,但icannot找到。这是我的解决方案,你能帮我吗? – tripley