0

编程新手和这个网站。我当前的 .jsp 是

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="java.sql.*" 
         import="action.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"             "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Here is your videogame!</title>
</head>

<BODY>
    <H1>The Videogame Database Table </H1>

    <%
        Connection c = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/videogamesdb", "root", "password");

        //instantiating a SQL statement
        Statement statement = c.createStatement();
        String sql = "SELECT * FROM videogamedetails";
        ResultSet resultset = 
            statement.executeQuery(sql) ;
    %>

    <TABLE BORDER="1">
        <TR>
            <TH>Name</TH>
            <TH>Genre</TH>
            <TH>Developer</TH>
            <TH>Rating</TH>
        </TR>
        <% while(resultset.next()) {%>
        <TR>
            <TD> <%= resultset.getString("vidgameName") %></TD>
            <TD> <%= resultset.getString("vidgameGenre") %></TD>
            <TD> <%= resultset.getString("vidgameDev") %></TD>
            <TD> <%= resultset.getInt("vidgameRating") %></TD>
        </TR>
        <% } %>
    </TABLE>
</BODY>
</HTML>

我相当确定我需要使用“SELECT * FROM videogamedetails WHERE vidgameName = p_Name”,但我不确定如何让 p_Name 成为用户搜索的内容。谢谢!

4

2 回答 2

0

您想更改为 PreparedStatement,以便它可以接受一个参数。

PreparedStatement statement = c.prepareStatement("select * from videogamedetails where vidgamename = ?");
statement.setString(1, "nameOfVideoGame");

此外,还有两个一般提示:

  1. 最佳实践是在 JSP 中使用 EL/JSTL 而不是 scriptlet
  2. 将 Java 代码保留在 JSP 之外是一种最佳实践。在线搜索MVC,看看如何将两者分开。
于 2013-05-03T19:54:33.050 回答
0

我不确定您如何将搜索参数 p_Name 传递给此 JSP。

一种方法是将 p_Name 设置为从重定向到此页面的请求属性,然后在此 jsp 上检索它。

  String p_Name = (String) request.getAttribute("someVariable");

使用准备好的语句将值传递给您的查询。

  PreparedStatement statement = c.prepareStatement("select * from videogamedetails where vidgamename = ?");
  statement.setString(1,  p_Name);

  rs = statement.executeQuery();
于 2013-05-03T19:56:11.137 回答