再帰クエリができるようになったので、そのクエリをjavaのシステムに埋め込んでみようと思っています。
java
1java.sql.SQLException: Descriptor index not valid. 2 com.ibm.as400.access.JDError.throwSQLException(JDError.java:389) 3 com.ibm.as400.access.AS400JDBCPreparedStatement.setValue(AS400JDBCPreparedStatement.java:2831) 4 com.ibm.as400.access.AS400JDBCPreparedStatement.setString(AS400JDBCPreparedStatement.java:2506) 5 dao.Bbom.Loadsit(Bbom.java:28) 6 action.BbomAction.execute(BbomAction.java:40) 7 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 8 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 9 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 10 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 11 javax.servlet.http.HttpServlet.service(HttpServlet.java:660) 12 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 13 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 14 filter.EncodingFileter.doFilter(EncodingFileter.java:30)
というエラーが出ます。
BbomAction.java
action
1package action; 2 3import java.sql.Connection; 4import java.sql.SQLException; 5 6import javax.naming.NamingException; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9 10import org.apache.struts.action.Action; 11import org.apache.struts.action.ActionForm; 12import org.apache.struts.action.ActionForward; 13import org.apache.struts.action.ActionMapping; 14 15import dao.Bbom; 16import dao.DB400Connection; 17 18public class BbomAction extends Action { 19 public 20 ActionForward execute( 21 ActionMapping mapping, 22 ActionForm form, 23 HttpServletRequest request, 24 HttpServletResponse response) 25 26 throws 27 SQLException, 28 NamingException, 29 IllegalAccessException, 30 java.lang.reflect.InvocationTargetException, 31 Exception{ 32 33 request.setCharacterEncoding("UTF-8"); 34 String mit = request.getParameter("mit"); 35 36 DB400Connection db400connection = new DB400Connection(); 37 Connection conn = db400connection.getConnection(); 38 39 Bbom bbom = new Bbom(); 40 Object list = bbom.Loadsit(conn, mit); 41 42 request.setAttribute("BomCodeForm", list); 43 44 return (mapping.findForward("success")); 45 46 }
から、
Bbom.java
java
1package dao; 2 3import java.lang.reflect.InvocationTargetException; 4import java.sql.Connection; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9 10import org.apache.commons.beanutils.BeanUtils; 11 12import form.BomCodeForm; 13 14public class Bbom { 15 16 public ArrayList<BomCodeForm> Loadsit(Connection conn, String mit) 17 throws SQLException, IllegalAccessException, InvocationTargetException{ 18 19 String sql 20 21 = " with recursive child (depth, id, children) as ( " + 22 " select 0, bm.IBMMIT, bm.IBMSIT from LIBFILE.BBOM1M00 as bm where bm.IBMMIT = '?' " + 23 " union all " + 24 " select child.depth + 1, bm.IBMMIT, bm.IBMSIT from LIBFILE.BBOM1M00 as bm, child where bm.IBMMIT = child.children)" + 25 " select DEPTH, id from child order by depth"; 26 27 PreparedStatement pStmt = conn.prepareStatement(sql); 28 pStmt.setString(1, mit); 29 ResultSet rs = pStmt.executeQuery(); 30 31 ArrayList<BomCodeForm> list = new ArrayList<>(); 32 33 34 while(rs.next()) { 35 BomCodeForm bomcodeform = new BomCodeForm(); 36 BeanUtils.setProperty(bomcodeform, "depth", rs.getString("DEPTH")); 37 BeanUtils.setProperty(bomcodeform, "sit", rs.getString("ID")); 38 39 list.add(bomcodeform); 40 } 41 return list; 42 } 43}
を呼び出して使おうとしていますが、Bbom.javaを使う段階でエラーになります。
最近デバッグというものを学んだので、やってみたところ、
ResultSet rs = pStmt.executeQuery();
の行に行くときにおかしくなります。
そのことから、Bbom.javaのsql部分の記述に問題があるのではないかとにらんでいるのですが、具体的にどう直せばよいのかが思いつきません。
sql単体だとしっかりクエリができることは確認しました。
お知恵を拝借したいです。
情報足りない場合は、教えてください。
###環境
Windows
Microsoft Windows [Version 10.0.17763.737]
Widnows10 Pro version 1809
Eclipse
Version: 2019-09 R (4.13.0)
Build id: 20190917-1200
Tomcat
9.0
Java
C:\Program Files (x86)\Java\jre1.8.0_221
C:\Program Files (x86)\Java\jdk1.5.0
Mysql
mysql Ver 8.0.17 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql-connector-java-8.0.17.jar
Struts
Specification-Version: 1.2.9(first struts プロジェクト)
回答1件
あなたの回答
tips
プレビュー