以下代码有什么问题?我想使用以下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>
答案 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 for
,while
或do-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循环比在这种情况下更好