小白请问各位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();
}

}

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

ps.setString(1,textField.getText());
ps.setString(2,(String)comboBox.getSelectedItem());
ps.setString(3,(String)comboBox_1.getSelectedItem());

上面这个参数是否都有值?debug或者打印日志看下,然后把值传入select * from picture where pname = ? and type = ? and style = ?;在mysql查询下看看

已经解决啦,谢谢各位大神!!!