コード ```### 前提・実現したいこと 商品別送り先数量のDBから送り先別配送商品の帳票を出力するプログラムです。 DBの原データから作業用配列へ情報を引き写すクラスがDataGetクラスです。その情報源として結果表ResultSetのインスタンスを渡そうとしたつもりなのですがうまくいきません。結果表ResultSetを渡そうとすること自体が無理なのでしょうか。どうかDataGetクラスに結果表ResultSetをうまく渡す方法をご教授ください。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ
DataGet dg = new DataGet(ResultSet rs);の行で。
DataGetを型に解決できません。ResultSetを変数に解決できません。
### 該当のソースコード ```java import static java.awt.Font.*; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; public class DataPrintable implements Printable{ String[]branch; String[]itemNo; String[]item; int[][]qty; int rowcount; public void DataGet(ResultSet rs1) { ResultSetMetaData meta = rs1.getMetaData(); int i=0; int columnIndex=0; int columnCount = meta.getColumnCount()+1; System.out.println("columnCount="+ columnCount); branch = new String[columnCount-1]; itemNo = new String[rowCount]; item = new String[rowCount]; qty = new int[rowCount][columnCount]; for(int k= 3;k<columnCount;k++) {branch[k-3]=meta.getColumnName(k);} System.out.println("klass.branch="+branch); while(rs1.next()) { itemNo[i] = rs1.getString(1); item[i] = rs1.getString(2); for (columnIndex=3;columnIndex<columnCount;columnIndex++){ qty[i][columnIndex-3] = rs1.getInt(columnIndex); } i +=1; } } @Override public int print(Graphics g,PageFormat pf,int pageIndex) { if (pageIndex > 2) return NO_SUCH_PAGE; Graphics2D g2= (Graphics2D)g; int j = 0; int l = 0; String itemNow; String itemw; String qtyw; float mmpt = 72/25.4f; System.out.println(pageIndex); g2.setFont(new Font(SANS_SERIF,PLAIN,20)); g2.drawString(branch[pageIndex]+" 向け 配送商品",35*mmpt,40*mmpt); g2.setFont(new Font(SANS_SERIF,PLAIN,10)); g2.drawString("商品番号 商品名 個数",35*mmpt,56*mmpt); System.out.println("qty[0].length="+qty[0].length); System.out.println("item.length="+item.length); for (j=0;j<item.length; j++) { if(qty[j][pageIndex] > 0) { itemNow = itemNo[j]; itemw = item[j]; qtyw =String.valueOf(qty[j][pageIndex]); g2.drawString(itemNow,35*mmpt,(64+8*l)*mmpt); g2.drawString(itemw, 50*mmpt, (64+8*l)*mmpt); g2.drawString(qtyw, 81*mmpt, (64+8*l)*mmpt); l +=1; } } return PAGE_EXISTS; } public static void main(String[]args) { try { Class.forName("org.h2.Driver");} catch(ClassNotFoundException e1) { e1.printStackTrace();} Connection con = null; try { con = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/mydb","sa",""); PreparedStatement pstmt = con.prepareStatement("SELECT * FROM ITEMS"); ResultSet rs2 = pstmt.executeQuery(); int rowCount; while(rs2.next()) {rowCount +=1;} System.out.println(rowCount); ResultSet rs = pstmt.executeQuery(); DataGet dg = new DataGet(ResultSet rs); PrinterJob pj = PrinterJob.getPrinterJob(); pj.setPrintable(new DataPrintable()); if (pj.printDialog()) { try{pj.print();} catch(PrinterException e) {System.out.println(e);}} } catch(SQLException e) {e.printStackTrace(); } finally { if(con != null) { try { con.close(); }catch(SQLException e) { e.printStackTrace(); } } } } }
試したこと
ResultSetMetaDataを渡すのかとも思ったが違うようだ。
補足情報(FW/ツールのバージョンなど)
OS:Windows10,エディター:Eclipse
回答1件
あなたの回答
tips
プレビュー