求大侠指教:报错信息如下:java.sql.SQLException: ORA-01407: 无法更新 ("DRP"."T_ITEMS"."CATEGORY") 为 NULL at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
at com.drp.basedata.dao.ItemDao4OracleImpl.modifyItem(ItemDao4OracleImpl.java:260)
at com.drp.basedata.managerImpl.ItemManagerImpl.modifyItem(ItemManagerImpl.java:88)
at org.apache.jsp.basedata.item_005fmodify_jsp._jspService(item_005fmodify_jsp.java:80)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.drp.util.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
jsp部分页面代码如下,即一个下拉列表,取得值后存入数据库中 <td>
<%
List itemCategoryList = DataDictManager.getInstance().getItemCategoryListt();
%>
<select name="category" class="select1" id="category">
<%
for (Iterator iter=itemCategoryList.iterator(); iter.hasNext(); ) {
ItemCategory ic = (ItemCategory)iter.next();
String selectedStr = "";
if (ic.getId().equals(item.getCategory().getId())) {
selectedStr = "selected";
}
%>
<option value="<%=ic.getId() %>" <%=selectedStr %>><%=ic.getName() %></option>
<%
}
%>
</select>
</td>
com.drp.basedata.managerImpl.ItemManagerImpl.modifyItem方法: public void modifyItem(Item item) {
Connection conn = null;
try {
conn = DB.getConnection();
itemDaoFactory.createItemDao().modifyItem(conn, item);
}catch(DBException e) {
throw new AppException("数据库连接失败,请联系系统管理员!");
}catch(DaoException e) {
throw new AppException("物料修改失败!");
}finally {
DB.close(conn);
}
}
com.drp.basedata.dao.ItemDao4OracleImpl.modifyItem方法: public void modifyItem(Connection conn, Item item) {
String sql = "update t_items set item_name=?, spec=?, pattern=?, category=?, unit=? where item_no=?";
PreparedStatement pstmt = null;
try {
conn = DB.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, item.getItemName());
pstmt.setString(2, item.getSpec());
pstmt.setString(3, item.getPattern());
pstmt.setString(4, item.getCategory().getId());
pstmt.setString(5, item.getUnit().getId());
pstmt.setString(6, item.getItemNo());
System.out.println("111111111");
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
}
}
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
at com.drp.basedata.dao.ItemDao4OracleImpl.modifyItem(ItemDao4OracleImpl.java:260)
at com.drp.basedata.managerImpl.ItemManagerImpl.modifyItem(ItemManagerImpl.java:88)
at org.apache.jsp.basedata.item_005fmodify_jsp._jspService(item_005fmodify_jsp.java:80)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.drp.util.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
jsp部分页面代码如下,即一个下拉列表,取得值后存入数据库中 <td>
<%
List itemCategoryList = DataDictManager.getInstance().getItemCategoryListt();
%>
<select name="category" class="select1" id="category">
<%
for (Iterator iter=itemCategoryList.iterator(); iter.hasNext(); ) {
ItemCategory ic = (ItemCategory)iter.next();
String selectedStr = "";
if (ic.getId().equals(item.getCategory().getId())) {
selectedStr = "selected";
}
%>
<option value="<%=ic.getId() %>" <%=selectedStr %>><%=ic.getName() %></option>
<%
}
%>
</select>
</td>
com.drp.basedata.managerImpl.ItemManagerImpl.modifyItem方法: public void modifyItem(Item item) {
Connection conn = null;
try {
conn = DB.getConnection();
itemDaoFactory.createItemDao().modifyItem(conn, item);
}catch(DBException e) {
throw new AppException("数据库连接失败,请联系系统管理员!");
}catch(DaoException e) {
throw new AppException("物料修改失败!");
}finally {
DB.close(conn);
}
}
com.drp.basedata.dao.ItemDao4OracleImpl.modifyItem方法: public void modifyItem(Connection conn, Item item) {
String sql = "update t_items set item_name=?, spec=?, pattern=?, category=?, unit=? where item_no=?";
PreparedStatement pstmt = null;
try {
conn = DB.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, item.getItemName());
pstmt.setString(2, item.getSpec());
pstmt.setString(3, item.getPattern());
pstmt.setString(4, item.getCategory().getId());
pstmt.setString(5, item.getUnit().getId());
pstmt.setString(6, item.getItemNo());
System.out.println("111111111");
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
}
}
解决方案 »
- 谁看过 尚学堂的 shopping 请进(79集的那套)
- hibernate.cfg.xml配置中,对sqlserver能用C3P0配置连接池吗??
- 单击侧边栏显示iframe
- 数据库存取图片显示不全问题
- 关于数据导出
- 关于发送邮件
- 请问 在IE 中不能用 IP 访问局域网的其他机器 网上邻居可以 也可以ping 通过代理也可以上网
- 如果不用session,我如何设置所有未经登陆的请求都转到login去啊?
- 有谁做过这样的一个功能?
- 1500分征XML学习心得, 资料集中(参与者均可得分,同开5贴)
- The requested resource () is not available.验证码登录后出现的异常,是怎么回事?
- JSP 插入页面出现错误
conn = DB.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, item.getItemName());
pstmt.setString(2, item.getSpec());
pstmt.setString(3, item.getPattern());
pstmt.setString(4, item.getCategory().getId());
pstmt.setString(5, item.getUnit().getId());
pstmt.setString(6, item.getItemNo());
System.out.println("111111111");
pstmt.executeUpdate();
}
加断点,看看要更新的每个值是不是获取到了。估计是,部分没有获取到,有NULL啊。
异常已经说的很清楚了,楼主就从页面开始,一步步看下到底走到哪变成null的