itspoppysu 2019-08-03 16:14 采纳率: 50%
浏览 246

小白请问各位java大神,下面的代码中rs没有结果是怎么回事?

有点急,在线等。以下是数据库里创建表的代码和源代码!麻烦各位姐妹哥弟康康我

数据表:
create table picture(pid int not null AUTO_INCREMENT primary key,img longblob not null,pname varchar(20),uploadtime varchar(30) not null,description varchar(50),type varchar(20),style varchar(20));

java程序:
public void actionPerformed(ActionEvent e) {

String selectsql="select * from picture where pname = ? and type = ? and style = ?;";
try {
Connection conn =DriverManager.getConnection("jdbc:mysql://localhost/mydatabase?serverTimezone=UTC","root","471414388");
PreparedStatement ps = conn.prepareStatement(selectsql);
ps.setString(1,textField.getText());
ps.setString(2,(String)comboBox.getSelectedItem());
ps.setString(3,(String)comboBox_1.getSelectedItem());
ResultSet rs = ps.executeQuery();
if(rs.next())System.out.print("yes");
while(rs.next()) {
FileInputStream in = (FileInputStream) rs.getBinaryStream("img");
FileOutputStream out = new FileOutputStream("./imgs/ttt.jpg");
System.out.print("yes");
byte[] b = new byte[in.available()];
in.read(b);
out.write(b);
in.close();
out.close();
}}
catch(Exception e1) {
e1.printStackTrace();
}

}
  • 写回答

3条回答 默认 最新

  • 毕小宝 博客专家认证 2019-08-03 16:24
    关注

    rs.next 调用了两次,如果数据库只有一条记录,则第一个次 if(rs.next()) 已经得到了这条数据,但是你没有处理,只是 print yes 。
    后面再 while 处理,此时已经没有数据了。
    解决办法:去掉第一个 if 判断,直接用 while(rs.next()) 遍历结果进行处理。

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?