jsp代码始终在结果集中显示错误?

时间:2019-03-07 14:19:53

标签: java mysql jsp tomcat server

我收到如下所示的错误

Error Message

我的代码是:-

String query="insert into student(stdid,sname,branch,email,phone)values(' "+htno+" ',' "+sname+" ',' "+branch+" ',' "+email+" ',' "+phone+" ')";
Statement stm=con.createStatement();
rs=st.executeQuery(query);

2 个答案:

答案 0 :(得分:1)

如果要使用Statement,则将行更改为

String query = "INSERT INTO student(stdid,sname,branch,email,phone) VALUES (\'" +
    htno +
    "\', \'" +
    sname +
    "\', \'" +
    branch +
    "\', \'" +
    email +
    "\', \'" +
    phone +
    "\')";

但是我建议您使用PreparedStetement保护您的应用程序免受SQL注入,然后您的查询将如下所示:

    PreparedStatement st = con.prepareStatement();
    String SQL_CREATE_STUDENT = "INSERT INTO student(stdid,sname,branch,email,phone) VALUES (?,?,?,?,?)";
    st.setInt(1, id);
    st.setString(2, sName);
    st.setString(3, branch);
    ...

了解更多:https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

答案 1 :(得分:0)

在可用的最少信息下,我只能说,如果“ con”对象为null,则在调用“ con.createStatement();”时会抛出一个空的指向异常。

请分享更多详细信息以进一步解决此问题。


感谢您共享日志和代码,这有助于分析问题。我已经遍历了堆栈跟踪和应用程序代码。 下面提到的代码段分配了stdid的值

String htno = request.getParameter("stdid");

在行

下执行时,代码由于Nullpointer异常而失败
ResultSet rs2=pst2.executeQuery();

堆栈跟踪显示以下错误

javax.servlet.ServletException: java.sql.SQLException: ORA-01400: cannot insert NULL into ("SYSTEM"."STUDENT"."STDID")

以上消息指示为STDID提供的值为空。这是错误的原因。如果调试并检查“ htno”的值,则可以进行验证。