我做了一个留言板,在message.htm中我已经做好了留言板的框架,包括姓名,EMAIL,性别,主题,留言,这些我都在数据库test中建好表message了,已经把tomcat和mysql启动了,当我在留言板中写好内容,准备提交,要把所写的内容insert表message时,却出现了问题:
javax.servlet.ServletException: Can not issue data manipulation statements with executeQuery().我要把留言记录到数据库的程序代码如下,大家帮我看看在写JDBC的时候是不是有什么问题<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
%@include file="convert.jsp"%>
<%@page contentType="text/html;charset=GB2312"%>
<%
//大家帮我看看这里有没有错误 Class.forName("com.mysql.jdbc.Driver").newInstance();
       Connection     con=DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK","root","505505");
       Statement smt=con.createStatement();
       ResultSet rs;
       String sql;
String name,email,subject,memo,sex;name=request.getParameter("name");
email=request.getParameter("email");
subject=request.getParameter("subject");
memo=request.getParameter("memo");
sex=request.getParameter("sex");if(name.length()==0||email.length()==0||subject.length()==0||memo.length()==0) 
{
out.print("<center><font color=red size=6>输入字段不能为空</font>");
out.print("<hr><a href=board.jsp>回留言看板                </a>"         );
out.print("<a href=message.html>       我要留言</a>");
}
else
{
int count=0,year,month,day,hour,minute,second,lastp;
String time;GregorianCalendar calendar;
calendar=new GregorianCalendar();
year=calendar.get(Calendar.YEAR);
month=calendar.get(Calendar.MONTH)+1;
day=calendar.get(Calendar.DAY_OF_MONTH);
hour=calendar.get(Calendar.HOUR);
minute=calendar.get(Calendar.MINUTE);
second=calendar.get(Calendar.SECOND);time=year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second;name=convert(name);
time=convert(time);
subject=convert(subject);
memo=Replace(memo);
memo=convert(memo);//大家帮我看看这里有没有错误
sql="insert into message set name="+name+",email="+email+",subject="+subject+",time="+
     time+",sex="+sex+",memo="+memo;
smt.executeQuery(sql);
sql="select * from message";
rs=smt.executeQuery(sql);
while(rs.next())
count++;lastp=(int)Math.ceil((double)count/5);
response.sendRedirect("board.jsp?pageno="+lastp);}
 %>
<html>
<title>错误信息</title>
</html>

解决方案 »

  1.   

    executeQuery好像只能用查询的吧 String cmd = "insert into a2(id,picture)values(?,?)";
    PreparedStatement pst = connection.prepareStatement(cmd);
    pst.setString(1,"12345");
    File img = new File(file);
    System.out.println(img.length());
    pst.setBinaryStream(2,new FileInputStream(file),(int)(img.length()));
    pst.executeUpdate();
      

  2.   

    我改成executeUpdate();了,但还是不行啊,大家继续帮忙下
      

  3.   

    可能是這裡的問題sql="insert into message set name="+name+",email="+email+",subject="+subject+",time="+
         time+",sex="+sex+",memo="+memo;你的time是什麼類型的??這句話在mysql裡可以運行嗎?試試
      

  4.   

    比如你的name如果是String
    sql="insert into message set name='"+name+"'"还是用 believefym(暮色,miss,迷失,miss) 说的PreparedStatement 要方便的多
      

  5.   

    PreparedStatement pstmt=con.prepareStatement("insert into message(name,email,subject,time,sex,memo)values(?,?,?,?,?,?)");
    pstmt.setString(1,name);
    pstmt.setString(2,email);
    pstmt.setString(3,subject);
    pstmt.setString(4,time);
    pstmt.setString(5,sex);
    pstmt.setString(6,memo);
    我的程序用这样可以把,可是我发现是可以记录到数据库中,可是浏览器页面又出错了,有错误提示是:
    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 'between1and5' at line 1