当实际有很多行时,ResultSet仅显示1行

时间:2017-11-15 10:49:08

标签: java swing

我正在为我的大学做一个项目。我正在使用resultSet从报纸表中选择所有行,并且我将每个报纸名称添加到JComboBox。我添加了很多报纸,但resultSet只选择第一行。

    try{
        combobox1.removeAllItems();
        ResultSet r1= MysqlCon.run("select * from "+pub);
        while(r1.next())
        {
            combobox1.addItem(r1.getString("name"));
            System.out.println(r1.getString(2));
        }
        //TODO
    }
    catch(Exception e){}

这是连接数据库的类

 import java.sql.*;  
class MysqlCon{  
    static ResultSet rs;
    public static ResultSet run(String query)
    {
        try{  
            Class.forName("com.mysql.jdbc.Driver");  
            Connection con=DriverManager.getConnection(  
                    "jdbc:mysql://localhost:3306/project","gijo","root");  
            Statement stmt=con.createStatement();  
            rs=stmt.executeQuery(query); 

        }catch(Exception e){ System.out.println(e);} 
        return rs;
    }

我正在使用相同的类向JTable添加值,并且没有问题。

请帮帮我!

1 个答案:

答案 0 :(得分:0)

从函数返回ResultSet并丢失StatementConnection的引用是错误的,完全错误。

GC可能遇到这些对象并考虑将其标记为未使用并运行其finalize方法。结果,连接可能在随机时间点下降。

您可能会重写您的API,或者您可以从{。}}形式学习Oracle。