使用JSP在数据库中搜索数据

时间:2014-06-25 10:20:49

标签: java jsp

以下代码有什么问题?我想使用以下JSP代码在数据库中搜索数据。

search.jsp的

<%@ page import="java.sql.*" %>
<html>
<form>
<table>
<%
String value=request.getParameter("id");
int v=Integer.parseInt(value);
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/employee ","root", "root");
Statement st=conn.createStatement();
ResultSet rs = st.executeQuery("select * from test where id="+v+"");
if(rs.next()){ 
    %>
<tr><td>Name: </td><td<input type="text" value="<%=rs.getString("name")%>" > </td></tr>
<tr><td>Address: </td><td<input type="text" value="<%=rs.getString("address")%>" > </td></tr>
<tr><td>Contact No: </td><td<input type="text" value="<%=rs.getInt("contactNo")%>" > </td></tr>
<tr><td>Email: </td><td<input type="text" value="<%=rs.getString("email")%>" > </td></tr>
      <%
}
%>
</table>
</form>
</html>

3 个答案:

答案 0 :(得分:1)

更改查询错误的选择查询尝试:

"select * from test where id='"+v+"'"

一个简单的例子:

<%
  String value=request.getParameter("student_id");;
  int v=Integer.parseInt(value);
  Class.forName("com.mysql.jdbc.Driver");
  Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root", "welcome");
  Statement st=conn.createStatement();
  ResultSet rs = st.executeQuery("select * from student where student_id='"+v+"'");
  if(rs.next()){
      %>
  <tr><td>Name: </td><td><input type="text" value="<%=rs.getString("student_name")%>"/> </td></tr>
        <%
  }
  %>

答案 1 :(得分:0)

我从不建议您在JSP中使用 Scriplet ,而是使用更易于使用且不易出错JavaServer Pages Standard Tag Library

您可以使用JSTL SQL Tag Library来实现它。

使用JSTL Core c:forEach, c:forTokens Tag作为通过Scriptlet嵌入Java forwhiledo-while loop的良好替代方案。


示例代码:(根据您的需要更改

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<sql:query dataSource="${dataSource}"
    sql="select name,address,contactNo,email from test where id=?" var="result">
    <sql:param value="${param.id}"></sql:param>
</sql:query>

<table border="1">
    <c:forEach var="row" items="${result.rows}">
        <tr>
            <td><input type="text" value="${row.name}"/></td>
            <td><input type="text" value="${row.address}"/></td>
            <td><input type="text" value="${row.contactNo}"/></td>
            <td><input type="text" value="${row.email}"/></td>
        </tr>
    </c:forEach>
</table>

JSTL SQL Tag上找到完整的示例代码。

答案 2 :(得分:0)

1 - &gt; Connection conn = DriverManager.getConnection(“jdbc:mysql:// localhost:3306 / employee”,“root”,“root”);

在您的代码中,数据库名称后面有一个空格

2 - &GT; 姓名:“&gt; 地址:“&gt; 联系号码:“&gt; 电子邮件:“&gt;

检查你的姓名:

我认为while循环比在这种情况下更好

相关问题