当前位置:编程学习 > JAVA >>

为什么代码执行到 stmt.executeUpdate(addsql); 就不执行了?

package week1_hw;

import java.io.IOException;
import java.io.PrintWriter;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.*;
import javax.servlet.http.*;

public class ConnDBA extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=GBK";

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response) throws ServletException,
                                                           IOException {
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>ConnDBA</title></head>");
        out.println("<body>");
        //Connection conn=null;
       // Statement stmt=null;
       // ResultSet rs=null;
        try {
            //装载驱动
            Class.forName("oracle.jdbc.driver.OracleDriver"); 
            //创建连接
            Connection  conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott",
                            "tiger");
           //创建发送SQL语句的对象
            Statement  stmt=conn.createStatement();
            //对数据库进行操作
            String addsql="INSERT INTO emp VALUES (7250,'HELLO','WORlD',101,1990-01-12,0000,123,10)" ;
            out.println("<p>1111111.</p>");
            stmt.executeUpdate(addsql);  
            out.println("<p>2222222.</p>");
            String querysql="SELECT * FROM emp";
            ResultSet rs = stmt.executeQuery(querysql);
            //处理操作结果
            while(rs.next())
            {
                out.println(
                        rs.getInt(1)+" "+ rs.getString(2)+" "+
                        rs.getString(3)+" "+ rs.getInt(4)+" "+
                        rs.getDate(5)+" "+ rs.getInt(6)+" "+
                       rs.getInt(7)+" "+rs.getInt(8)+"<br />");
                 }
            
           if (rs != null)
                    rs.close();
                if (stmt != null)
                    stmt.close();
                if (conn != null)
                    conn.close();
            } 
        catch (Exception e) {
            e.printStackTrace();
        }
             
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
        out.println("</body></html>");
        out.close();
    }
}
--------------------编程问答-------------------- stmt.executeUpdate(addsql); 

是不是到了这句话后,就抛异常了?直接被catch()了 --------------------编程问答-------------------- INSERT INTO emp VALUES (7250,'HELLO','WORlD',101,1990-01-12,0000,123,10)

这句应该有问题。 --------------------编程问答-------------------- stmt.executeUpdate(addsql);   ----  这句话出错了,可以推理addsql有问题

也就是这条语句  --  String addsql="INSERT INTO emp VALUES (7250,'HELLO','WORlD',101,1990-01-12,0000,123,10)" ;

经观察,是你的sql语句语法出错了。

7250 ,101,1990-01-12,0000,123,10   这些插入的语句都要加上''  ,和你的'HELLO'这格式一样。 --------------------编程问答-------------------- addsql有问题,如果是中文系统的话日期应是不能这样直接写的,试试to_date方法 --------------------编程问答-------------------- 会不会是线程阻塞或者进程假死,
你关闭tomcat和eclipse重新来一下吧!

3楼的分析也有道理,不仅要加单引号,
如果数据库是日期(date)格式,还要转型:to_date('1990-01-12','yyyy-mm-dd')
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,