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()) 遍历结果进行处理。

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题