我收到如下所示的错误
我的代码是:-
String query="insert into student(stdid,sname,branch,email,phone)values(' "+htno+" ',' "+sname+" ',' "+branch+" ',' "+email+" ',' "+phone+" ')";
Statement stm=con.createStatement();
rs=st.executeQuery(query);
答案 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”的值,则可以进行验证。