我做了个添加图书的页面add_book.jsp,其action是跳转到addend.jsp页中,测试时总说insert有错。标点和那些名称我都确认过了,没错。可它测试时总说insert into语句有错。谁知道错在哪能里呢?帮帮我啊!!下面是addend.jsp的代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.util.Date" errorPage="" %>
<%@include file="conn.jsp" %>
<%!
//String transform(String content) 
//{ 
//content=content.replaceAll("&","&amp;"); 
//content=content.replaceAll("<","&lt;"); 
//content=content.replaceAll(" ","&nbsp;"); 
//content=content.replaceAll(">","&gt;"); 
//content=content.replaceAll("\n","<br>"); 
//return content; 
//} %>
<%
request.setCharacterEncoding("gb2312");//为了添加到数据库中的数据消除中文显示乱码隐患//下一段程序用于提取网页中输入的信息存入到相应的变量中,以备后面添加语句中使用
String bookno,sortno,title,author,price,number;
bookno=request.getParameter("bookno").trim();
sortno=request.getParameter("sortno").trim();
title=request.getParameter("title").trim();
author=request.getParameter("author").trim();
price=request.getParameter("price").trim();
number=request.getParameter("number").trim();//结束//生成sql命令语句
String sqlcmd,sqlcmd1,sqlcmd2;
sqlcmd="insert into books(bookno,sortno,title,author,price,number) values('";
out.print(sqlcmd);
sqlcmd1=bookno+"','"+sortno+"','"+title+"','"+author+"','"+price+"','"+number+"')";
sqlcmd2=sqlcmd+sqlcmd1;
//执行sql命令
stmt.execute(sqlcmd);   
response.sendRedirect("succ_wait.jsp"); 
 
%>

解决方案 »

  1.   

    代码很有问题!建议不要在JSP页面写JAVA代码,你可以写一个JAVA类来处理你的insert操作!
    楼主的代码要规范一下咯!!!毕竟JSP不是PHP!!!
      

  2.   

    你不是应该执行sqlcmd2么…………sqlcmd2=sqlcmd+sqlcmd1;
    ----->>>>>>>>>>>>>>
    stmt.execute(sqlcmd2);  
      

  3.   

    没有进行数据转换,如果你的数据库里面的所有字段类型都是String可以不用转换,如果有其它类型,是需要转换的,否则是会报错的啦
      

  4.   

    怎么会规范呢?是这样子的啊!别人测试都能成功的,但我测试时就出现这样的问题了,我不会写JAVA语句,虽然有学过一点。
      

  5.   

    要是整个sql拼串,
    而不是用execute .. using..绑定参数那种的,不转型也无妨~~都是自动的吧
      

  6.   


    这里我怎么看不懂你写的sql语句能解释一下sqlcmd="insert into books(bookno,sortno,title,author,price,number) values('"; 这后面的括号呢?
     out.print(sqlcmd); 为什么要有这一句?
      

  7.   

    哦这一句是我为了测试一下insert into语句,让它输出来看一下哪里有错的,,我忘了把它删了再复制了。你可以把这一句去掉的。
      

  8.   

    我的数据库表是这样子的:
    id   bookno   sortno   title   author   price  number
    对应的数据
      

  9.   

    sqlcmd="insert into books(bookno,sortno,title,author,price,number) values('";sqlcmd1=bookno+"','"+sortno+"','"+title+"','"+author+"','"+price+"','"+number+"')"; 
    ==========================
    可以整合成一条sql,为什么要这么麻烦呢:sqlcmd2="insert into books(bookno,sortno,title,author,price,number) values('"+bookno+"','"+sortno+"','"+title+"','"+author+"','"+price+"','"+number+"')";//然后执行sql
    stmt.execute(sqlcmd2); 
    response.sendRedirect("succ_wait.jsp"); 
      

  10.   

    id字段可以为空吗,为什么不插入id
      

  11.   

    改了还是一样出现之前出现的问题,说是insert into 语句有错。。整合的跟不整合也一样都试过了,下面的改sql2也改了都是出现说insert into语句有错?这是为什么呢?
      

  12.   

    先把语句输出下 或者先手动往里放语句的值 出错应该也很好找 把错误输出下 我看LZ上面那几行注释代码 貌似LZ用了类似文本编辑器的东西 有的话 语句最好别那样写 用
    PrepareStatement来完成
      

  13.   

    直接贴出报的错出来看看不就行了吗 你要执行的是 
    stmt.execute(sqlcmd2);吧 
      

  14.   

    用了out print(sqlcmd2),之前我也有这样测试过。。还是跟我之前测试的一个样。它输出来的是这样子的提示英文:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
    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:802)
    我看不出来是哪错了。?
      

  15.   

    在后台打印你的那个SQL语句看看
      

  16.   

    out.print(sqlcmd); 
    ..后面你又来个2=1+d ....
    并且 sqlcmd语句不完整.
      

  17.   

    麻烦你把你现在那的SQL语句贴出来
      

  18.   

    [Quote=引用 24 楼 userfeng0910 的回复:]
    用了out print(sqlcmd2),之前我也有这样测试过。。还是跟我之前测试的一个样。它输出来的是这样子的提示英文:
    type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
    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:802)
    我看不出来是哪错了。?这个就是报错信息啊。。输出sql语句就是这样子的提示了。
      

  19.   

    description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: [Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.library13.addend_jsp._jspService(addend_jsp.java:108)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    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:802)还是出现上面的那些出错信息。做的快要疯了,一个问题都解决不了。那位会的帮帮忙啊!!
      

  20.   

    1、先测试,数据库是否正确
    2、测试网页与数据库连接是否正确
    3、查看jsp生成的java代码,看有没有错误
    4、查看一下应用服务器
      

  21.   

    先不要执行SQL语句 先输出来 给大家看看你的sql语句到底有没有错误
      

  22.   

    sqlcmd1  开始不是少个+吗
      

  23.   


    "insert into books(bookno,sortno,title,author,price,number) values('"; 
    out.print(sqlcmd); 
    sqlcmd1=bookno+"','"+sortno+"','"+title+"','"+author+"','"+price+"','"+number+"')"这个bookno,sortno,price应该是整型或浮点之类吧,不用" '' "的,而title和author应该是字符串,才要''改成下面那样试试: 
    "insert into books(bookno,sortno,title,author,price,number) values("
    sqlcmd1=bookno+","+sortno+",'"+title+"','"+author+"',"+price+","+number+")"