项目场景:
项目场景:jsp连接数据库更新,update代码
问题描述
提示:这里描述项目中遇到的问题:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%request.setCharacterEncoding("utf-8");%>
<% String id=request.getParameter("stuid");%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%! ResultSet rs;%>
<%
String dbName = "studb";
String userName = "root";
String userPasswd = "root";
String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url);
String sql = "DELETE from student where number=?";
PreparedStatement preparedStatement= conn.prepareStatement(sql);
preparedStatement.setString(1,id);//可以将第一个参数设置为变量id的值。这里的数字1表示参数的位置
int result= preparedStatement.executeUpdate();
if(result>0)
out.print(" <script type='text/javascript'>alert('修改成功'); </script> ");
else
out.print(" <script type='text/javascript'>alert('修改失败'); </script> ");
sql = "select * from student ";
rs = preparedStatement.executeQuery(sql);
%>
</head>
<body>
<table border="1">
<th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
<tr style=" text-align: center">
<td>学号</td>
<td>姓名</td>
<td>出生日期</td>
<td>所在班级</td>
</tr>
<% while (rs.next()) { %>
<tr style=" text-align: center">
<td><%= rs.getString(1) %></td>
<td><%= rs.getString(2) %> </td>
<td><%= rs.getString("birthday")%></td>
<td><%= rs.getString("stuclass")%></td>
</tr>
<% } %>
<%
rs.close();
preparedStatement.close();
conn.close();
%>
</table>
</body>
</html>
原因分析:
代码是没有问题的,我发现是没有运行Tomcat,Tomcat是开发和调试JSP程序的首选。 Tomcat的作用是负责接收和反馈外部请求的连接器Connector和负责处理请求的容器Container。其中连接器和容器相辅相成,一起构成了基本的web服务Service。每个Tomcat服务器可以管理多个Service。
解决方案:
先运行tomcat,但是出现了500错误
发现批量添加中的代码,因为重复性操作导致了数据库数据重合
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.Connection" %>
<%@page import="java.sql.DriverManager" %>
<%@page import="java.sql.PreparedStatement" %>
<%@page import="java.sql.ResultSet" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>批量添加</title>
<%! ResultSet rs;%>
<%
String dbName = "studb";
String userName = "root";
String userPasswd = "root";
String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url);
String[] numbers=new String[]{"07","08","09","10"};
String[] names=new String[]{"多多","皮皮","珠珠","凯凯"};
String[] birthdays=new String[]{"2002-02-02","2002-09-20","2002-12-12","2002-08-10"};
String[] stuclass=new String[]{"333","331","332","333"};
String sql = "INSERT into student VALUES( ?,?,?,?)";
PreparedStatement preparedStatement= conn.prepareStatement(sql);
for (int i = 0; i <4 ; i++) {
preparedStatement.setString(1,numbers[i]);
preparedStatement.setString(2,names[i]);
preparedStatement.setString(3,birthdays[i]);
preparedStatement.setString(4,stuclass[i]);//调用了setString()方法来将第四个占位符
preparedStatement.addBatch(); //调用preparedStatement.addBatch()方法
}
int[] result= preparedStatement.executeBatch();
if(result.length>0)
System.out.print("<script type='text/javascript'>alert('导入信息成功');</script>");
else
System.out.print("<script type='text/javascript'>alert('导入信息失败');</script>");
sql="select*from student";
rs=preparedStatement.executeQuery(sql);
%>
</head>
<body>
<table border="1">
<th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
<tr style=" text-align: center">
<td>学号</td>
<td>姓名</td>
<td>出生日期</td>
<td>所在班级</td>
</tr>
<% while (rs.next()) { %>
<tr style=" text-align: center">
<td><%= rs.getString(1) %></td>
<td><%= rs.getString(2) %> </td>
<td><%= rs.getString("birthday")%></td>
<td><%= rs.getString("stuclass")%></td>
</tr>
<% } %>
<%
rs.close();
preparedStatement.close();
conn.close();
%>
</table>
</body>
</html>
解决方法:删除数据库重复数据或者添加不重复的数据
最后就可以拿到数据