为什么代码执行到 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