我正在研究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)
{
}
答案 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();
}
这应该有效