#java #jsp
#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>
Комментарии:
1. Полученное вами исключение сообщает вам, что
2. 14: Class.forName(«com.mysql.jdbc.Driver»). newInstance(); в этой строке отображается ошибка. Пожалуйста, объясните, что я новичок в jsp. Спасибо
3. Кстати, после этого есть пробел
employee
, и вы не вызываете `rs.close (); conn.close ();` ни обработку исключений. Сначала запустите код в IDE как крошечное java-приложение.4. @user274910 возможная причина отсутствия драйвера mysql jdbc в вашем пути к классу, убедитесь, что вы добавили этот драйвер в свой проект.
5. @user274910 и если у вас есть драйвер JDBC на вашем пути, он вам больше не нужен
Class.forName("com.mysql.jdbc.Driver");
. Это пережиток старой версии Java.
Ответ №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. Спасибо, мне это удалось
2. если это сработало, пожалуйста, примите это как свой ответ, нажав на знак стрелки в левой части ответа, и вы можете проголосовать за него. Спасибо
Ответ №2:
Я никогда не предлагаю вам использовать Scriplet в JSP, вместо этого используйте стандартную библиотеку тегов JavaServer Pages, которая более проста в использовании и менее подвержена ошибкам.
Вы можете достичь этого с помощью библиотеки тегов JSTL SQL.
Используйте тег JSTL Core c: forEach, c: forTokens, который является хорошей альтернативой встраиванию 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.
Ответ №3:
1—> Connection conn = DriverManager.getConnection(«jdbc: mysql:// localhost:3306/employee», «root», «root»);
в вашем коде после имени базы данных есть пробел
2 —> Имя: » > Адрес: » > Контактный номер: » > Электронная почта: » >
проверьте свое имя:
я думаю, что цикл while лучше, чем если бы в этом случае