Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jtable中检索图像_Java_Swing_Jdbc_Jtable - Fatal编程技术网

Java 在jtable中检索图像

Java 在jtable中检索图像,java,swing,jdbc,jtable,Java,Swing,Jdbc,Jtable,我用java编写了一个程序,从表中检索图像和文本数据。一切都是对的,只是当我试图从表中检索图像(Blob)时,我得到了一个累坏的结果集错误。我尝试用谷歌搜索它,但解释过于简洁。有人能帮我吗?请给我一个好的解释 这是密码 try { Class.forName(classforname); Connection con = DriverManager.getConnection(Connectionurl, username, password); String sql

我用java编写了一个程序,从表中检索图像和文本数据。一切都是对的,只是当我试图从表中检索图像(Blob)时,我得到了一个累坏的结果集错误。我尝试用谷歌搜索它,但解释过于简洁。有人能帮我吗?请给我一个好的解释

这是密码

       try {
  Class.forName(classforname);
  Connection con = DriverManager.getConnection(Connectionurl, username, password);
  String sql = "Select * from teacherdata where teachername='" + tf1.getText() + "'";
  PreparedStatement ps = con.prepareStatement(sql);
  ResultSet rs = ps.executeQuery(sql);
  rs.next();
  String thename = rs.getString("teachername");
  String sub1, sub2, sub3, sub4;
  sub1 = rs.getString("sub1");
  sub2 = rs.getString("sub2");
  sub3 = rs.getString("sub3");
  sub4 = rs.getString("sub4");
  String sql2 = "select tid,tpic from teacherimages where teachername='" + tf1.getText() + "'";
  PreparedStatement ps2 = con.prepareStatement(sql2);
  ResultSet rs2 = ps2.executeQuery(sql2);
  rs2.next();
  String Tid = rs2.getString("tid");
  Blob b = rs.getBlob("tpic");
  byte barr
   [] = new byte[(int) b.length()]; //an array is created but contains no  data
  barr = b.getBytes(3, (int) b.length());
  Image im = jInternalFrame1.getToolkit().createImage(barr);
  ImageIcon icon = new ImageIcon(im);
  JLabel label = new JLabel(icon);
  Object[] row = {
   thename,
   sub1,
   sub2,
   sub3,
   sub4,
   b,
   Tid,
   icon
  };
  DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

  model.addRow(row);

  jTable1.setVisible(true);
 } catch (SQLException e) {
  e.printStackTrace();
 } catch (ClassNotFoundException ex) {
  Logger.getLogger(SearchBox.class.getName()).log(Level.SEVERE, null, ex);
 }

您没有在ResultSet上检查next的返回值

请考虑将代码更改为

if(result.next()){
    //  the logic 
}
编辑 关于代码的进一步更改,请检查您的表是否为空。如果表为空,则不会返回值

当您在迭代或未检查结果集是否返回数据后尝试访问结果集时,会出现错误

while (resultSet.next()) {
  //result set logic
}
// 
resultset.getString[1] //<- will throw error Exhausted Resultset
while(resultSet.next()){
//结果集逻辑
}
// 

resultset.getString[1]//请提供exception.java.sql.SQLException:detained resultset将完整堆栈跟踪存储到问题(格式化)。您有很多错误-资源未关闭-连接,结果集,…至少显示错误发生的行您确定
rs.next()
rs2.next()返回了一个结果?当没有从数据库返回特定条件的记录时,以及当您尝试访问rs.getString(“teachername”);您将得到这个错误“耗尽的结果集”。没有结果是什么意思?错误
java.sql.SQLException:expeated Resultset
表示查询未返回任何数据,您试图访问结果集Yes i know..但这怎么可能..我已在单独的面板上成功检索到图像。。。但是不能在表上这样做现在我尝试通过finction单独调用image对象,并将其用作返回值添加到表中。。