【发布时间】:2014-06-03 14:01:26
【问题描述】:
我正在用 java swing 开发一个项目“医院管理系统”。现在我有一个文本字段,其值应该在页面加载时增加一。它基本上包含患者 ID 的值。现在我想从数据库中检索最大值或最后一个值并将其加一,并希望在变量为“textField_1”的文本字段中设置该值。这里表名是“患者”,列名是“patid”,这个 sn-p 是在页面加载事件中写入的。选择查询已成功执行,但问题是未从数据库中获取最大值。在 if 块中达到了控制,但它没有打印 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)
{
}
【问题讨论】:
-
只使用
select max(patid) from patient有什么问题?此外,这假设 NO-ONE else 将在此查询之后添加新患者... -
您的问题是 SQL(似乎不是)还是显示问题?如果有显示,请忽略 SQL 并尝试仅使用 java.xml 来启动它。如果这不起作用,请询问有关此的问题。我的猜测是您的文本字段没有显示它拥有的数据,因为它没有重新绘制/刷新。
-
另外,你不应该捕获异常然后什么都不做。也许你在
rs.getInt(1)中得到一个异常(因为它不是一个int,也许?你选择所有列,没有顺序,谁知道第一个,可能是名称。)然后你忽略那个异常。至少写e.printStackTrace()将异常打印到控制台。然后在此处粘贴异常。