如何从java程序中的access数据库中检索整数列的最大值?

时间:2014-06-03 01:46:58

标签: java swing

我正在研究java swing中的“医院管理系统”项目。现在我有一个文本字段,每当页面加载时,其值应该增加1。它基本上包含患者Id的值。现在我想从数据库中检索最大值或最后一个值并将其增加一个,并希望在变量为“textField_1”的文本字段中设置该值。这里的表名是“patient”,列名是“patid”,这个片段是在页面加载事件中写的。选择查询已成功执行但问题未从数据库中获取最大值。在if块中达到控制但是如果“i”则不打印该值。请帮忙!!

    try
    {
        Connection con;
        Statement st;
        ResultSet rs;

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con=DriverManager.getConnection("Jdbc:Odbc:hos_man");
        st=con.createStatement();
        rs=st.executeQuery("select * from patient where patid = (select max(patid) from patient);");
        if (rs.next()==true)
        {
            int i=rs.getInt(1);
            i++;
            textField_1.setText(""+i);
        }
        else
        {
            textField_1.setText(""+100);
        }   
        con.close();
        st.close();
        rs.close();
    }
    catch (Exception e)
    {
    }

1 个答案:

答案 0 :(得分:1)

首先你的查询是正确的,但它的不良做法。如果您只需要max(patid),请使用此查询:

select max(patid) from patient

然后修改您的代码,如下所示。

try
        {
            Connection con;
            Statement st;
            ResultSet rs;

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con=DriverManager.getConnection("Jdbc:Odbc:hos_man");
            st=con.createStatement();
            rs=st.executeQuery("select max(patid) from patient");
            int i=100;
            while (rs.next())
            {
                i=rs.getInt(1);


            }
            textField_1.setText(""+i); 
            con.close();
            st.close();
            rs.close();
        }
        catch (Exception e)
        {
        e.printStackTrace();
        }

这应该有效