/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */package yy.com;import java.io.*;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;import javax.servlet.*;
import javax.servlet.http.*;/**
 *
 * @author hyl
 * @version
 */
public class SendMail extends HttpServlet {    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String host ="127.0.0.1" ;
        String from="[email protected]";
        String to="[email protected]";
        String subject="try";
        String content="just try it";        try{
            //变量声明
        java.sql.Connection sqlCon; //数据库连接对象
        java.sql.Statement sqlStmt; //SQL语句对象
        java.sql.ResultSet sqlRst; //结果集对象
        java.lang.String strCon; //数据库连接字符串
        java.lang.String strSQL; //SQL语句
        //装载JDBC驱动程序
        Class.forName("org.gjt.mm.mysql.Driver").newInstance();
        //连接数据库
        sqlCon = java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/mail","root","102686");
        //创建语句对象
        sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
        //执行SQL语句并获取结果集
        java.sql.PreparedStatement preparedStmt=null; //语句对象
        preparedStmt =sqlCon.prepareStatement("select state,come,to,subject,content from mail where state like ?");
        //设置参数
        preparedStmt.setString(1,"0");        //执行Sql语句
        sqlRst=preparedStmt.executeQuery ();        int intRowCount = sqlRst.getRow();
        if(intRowCount>0){
        from = sqlRst.getString(2);
         to=sqlRst.getString(3);
         subject= sqlRst.getString(4);
        content=sqlRst.getString(5);
        sqlRst.next();
        intRowCount--;
        }
        //关闭结果集
        sqlRst.close();
        //关闭SQL语句对象
       sqlStmt.close();
        //关闭数据库
        sqlCon.close();            Properties props = new Properties();
            Session sendMailSession;
            Store store;
            Transport transport;
            sendMailSession = Session.getInstance(props, null);
            props.put("mail.smtp.host", host);
            Message newMessage = new MimeMessage(sendMailSession);
            newMessage.setFrom(new InternetAddress(from));
            newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
            newMessage.setSubject(subject);
            newMessage.setSentDate(new Date());
            newMessage.setText(content);
            Transport.send(newMessage);
            ////显示发送成功的提示
            out.println(" the Email send sucess!");
        }catch(Exception m) {
            out.println(m.toString());
        }    }    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}运行报错: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 'to,subject,content from mail where state like '%0%'' at line 1  
有没有人可以帮忙啊?谢谢谢谢··

解决方案 »

  1.   

    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException很明显告诉你:
    Mysql语法错误的异常,你的SQL语句有问题,请检查~!
      

  2.   

     java.sql.PreparedStatement preparedStmt=null; //语句对象
      preparedStmt =sqlCon.prepareStatement("select state,come,to,subject,content from mail where state like ?");
      //设置参数
      preparedStmt.setString(1,"0");  //执行Sql语句
      sqlRst=preparedStmt.executeQuery ();这块可能有点问题吧? 你用PrepareStatement为什么还要用Statementa ? 
      

  3.   

    呃·问题可能有点菜·我是刚刚开始学·那个错误改过来了·确实是语句有问题 
    我想
    preparedStmt =sqlCon.prepareStatement("select state,come,des,subject,content from yymail where state like ?")
           preparedStmt.setString(1,"0");
     
                  //执行Sql语句
            sqlRst=preparedStmt.executeQuery ();        int intRowCount = sqlRst.getRow();
    用 intRowCount获取 符合查询条件的记录数目,可是为什么查询结果总是 0 条啊?????谢谢大家 谢谢大家······
      

  4.   

      if(intRowCount>0){
            from = sqlRst.getString(2);
             to=sqlRst.getString(3);
             subject= sqlRst.getString(4);
            content=sqlRst.getString(5);
            sqlRst.next();
            intRowCount--;
            }这段程序想实现 获取 查询结果的  每个属性值,分别赋值给每个String变量 可是 执行还是有问题······
    以上着两个问题     摆脱大家帮帮忙啊······