这是一个函数,在接受患者表中作为咨询字段的字符串s
后,从医生表中返回最小医生ID。例如,如果我在该领域写了“心脏病学”,那么它将返回与该领域相关的最低医生ID。
此外,如果医生是否有空,将根据其现状确定。
默认情况下,医生是免费的,并且在分配后将更改为是。
SQL语句中存在问题。
public int getDocID(String s)
{
int did = 0;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con =
DriverManager.getConnection("jdbc:odbc:patientDSN");
Statement stat = con.createStatement();
ResultSet rs =
stat.
executeQuery
("select min(Doc_ID) from Doctor where (Doc_CurrentStatus='No' and Doc_Speciality like '%"
+ s + "'%'");
if (rs.next()) {
did = rs.getInt(1);
}
System.out.println(did);
PreparedStatement ps1 =
con.
prepareStatement
("UPDATE Doctor SET Doc_CurrentStatus='Yes' where Doc_ID = "
+ did + "");
ps1.executeUpdate();
}
catch(Exception e) {
e.printStackTrace();
}
return did;
}
答案 0 :(得分:3)
你有一个
引用的不仅仅是你需要的东西。它在最后一个
之前“%”
百分比符号。您也必须关闭最后一个括号。您可能需要查看PrepareStatement。链接到Java Tutorial
ResultSet rs = stat.executeQuery(
"select min(Doc_ID) from Doctor where (
Doc_CurrentStatus='No' and Doc_Speciality like '%"+s+"%'
)"
);
您可以执行此查询:
select Doc_ID from Doctor where (Doc_CurrentStatus='No' and Doc_Speciality like '%"+s+"%') ORDER BY Doc_ID ASC LIMIT 1");
可以改善表现。