MYSQL版本:5.0
JDBC版本:mysql-connector-java-5.0.8-bin.jar
服务:jakarta-tomcat-5.0.24
代码如下:
uploadImg.jsp:
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url="jdbc:mysql://localhost/webshop?user=root&password=root&useUnicode=true&characterEncoding=GBK";
Connection conn=DriverManager.getConnection(Util.dburl,Util.dbuser,Util.dbpwd);
FileInputStream  str=new FileInputStream(img);
String sql= "insert into img(index,imgName) values(1,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,"aa");
pstmt.execute();出现如下异常:
javax.servlet.ServletException: 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 'index,imgName) values(1,'aa')' at line 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.manage.uploadImg_jsp._jspService(uploadImg_jsp.java:158)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)请问这是怎么回事?非常急,感谢各位高手相助!

解决方案 »

  1.   

    'index,imgName) values(1,'aa')'
    疑似列名、类型的问题
      

  2.   

    MYSQL表字段如下:
    index int(11)
    imgName varchar(50)
    img blob
      

  3.   

    String url="jdbc:mysql://localhost:1433/webshop?user=root&password=root&useUnicode=true&characterEncoding=GBK";数据库连上了?你设置的不用端口?
    吃饭去了, 要是没解决回来再看看
      

  4.   

    回楼上,数据库连上,其他页面用Statement操作没有问题,可以正常插入,因为这个页面需要插入图片,使用BLOB类型,所以使用PreparedStatement,可是一直报这个错:
    javax.servlet.ServletException: 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 'index,imgName) values(1,'aa')' at line 1
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.manage.uploadImg_jsp._jspService(uploadImg_jsp.java:158)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
      

  5.   

    pstmt.execute();
      改成 pstmt.executeUpdate();
      

  6.   

    pstmt.execute();和pstmt.executeUpdate();都试过,报同样的错。
    另外问一下,execute()和executeUpdate()有什么区别?
      

  7.   

    'index,imgName) values(1,'aa')'pstmt.setString(1,"aa");
    我觉得可能是格式不匹配,看用单引号行不?
      

  8.   

    我想问一下你数据库里面有没有index已经为1的这一条记录额
      

  9.   

    语法错误...............楼主自己在分析器里试试自己写的SQL是否存在错误,这里不是你的程序问题,而是你的SQL语法问题....
      

  10.   

    我把SQL语句在查询分析器里执行,可以正常执行的,所以不知道哪里错了
      

  11.   

    客户端执行 一下sql 看有没有问题 insert into img(index,imgName) values(1,?)看你给的字段的类型 貌似没有问题 
    org.gjt.mm.mysql.Driver
    是不是驱动的问题
    mysql-connector-java-5.0.8-bin.jar
    我一般都是用
    Class.forName("com.mysql.jdbc.Driver").newInstance();
      

  12.   

      会不会收到 blob字段影响 你去掉那个字段试下,
      

  13.   

    把blob字段去掉了,还是报这个错。其实我也怀疑是不是JDBC的版本问题,请各路大仙帮小弟看下。
    MYSQL版本:5.0
    JDBC版本:mysql-connector-java-5.0.8-bin.jar
    服务:jakarta-tomcat-5.0.24