__浅安 2019-04-06 17:40 采纳率: 0%
浏览 885

做一次性修改多条内容

报错内容
javax.servlet.ServletException: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''?°?é??','??·',26,54' at line 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.ch.changel_jsp._jspService(changel_jsp.java:145)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

相关代码
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">




学号
姓名
性别
年龄
体重

<%

String id=request.getParameter("sid");
int id1=Integer.parseInt(id);
String name=request.getParameter("sname");
String name1=new String(name.getBytes("iso-8859-1"),"utf-8");
String sex=request.getParameter("sex");
String sex1=new String(sex.getBytes("iso-8859-1"),"utf-8");
String age=request.getParameter("age");
int age1=Integer.parseInt(age);
String tiz=request.getParameter("tiz");
int tiz1=Integer.parseInt(tiz);
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=gbk";
Connection con=DriverManager.getConnection(url,"root","123456");
String s="update stuinfo set sid="+id1+",sname='"+name1+"',sex='"+sex1+"',age="+age1+",weight="+tiz1+" where sid="+id1+"";
PreparedStatement ps=con.prepareStatement(s);
ps.executeUpdate();
ps=con.prepareStatement("select * from stuinfo");
ResultSet rs= ps.executeQuery();
while(rs.next()){
%>


<%=rs.getString("sid") %>
<%=rs.getString("sname") %>
<%=rs.getString("sex") %>
<%=rs.getString("age") %>
<%=rs.getString("weight") %>
     </tr>
     <%}%>
     </table>


  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 08:04
    关注

    根据报错信息和代码,可以看出可能是SQL语句中的参数格式错误导致的。建议检查提交的参数,确保参数值的正确性和格式化,可以使用PreparedStatement来执行SQL语句,它可以防止SQL注入攻击,并且自动帮你处理数据类型转换和格式化的问题。例如,可以将该代码中的以下语句:

    String s="update stuinfo set sid="+id1+",sname='"+name1+"',sex='"+sex1+"',age="+age1+",weight="+tiz1+" where sid="+id1+"";
    PreparedStatement ps=con.prepareStatement(s);
    

    替换为:

    String s="update stuinfo set sid=?, sname=?, sex=?, age=?, weight=? where sid=?";
    PreparedStatement ps=con.prepareStatement(s);
    ps.setInt(1, id1);
    ps.setString(2, name1);
    ps.setString(3, sex1);
    ps.setInt(4, age1);
    ps.setInt(5, tiz1);
    ps.setInt(6, id1);
    ps.executeUpdate();
    

    这样可以更好地处理参数,避免参数值格式不一致的问题,也更加安全。另外,还可以从报错信息中获取更多的信息,例如可以检查数据库版本是否匹配,是否有其它错误导致的异常等。

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献