gpt4 book ai didi

java - SQL和数据库

转载 作者:行者123 更新时间:2023-12-01 16:09:00 25 4
gpt4 key购买 nike

我的数据库类中有这个方法。我想从MySQL表中的“dateOfBirth”列中获取部分数据,但我不知道为什么list.size()是“0”但是当我在代码中使用 System.out.println() 时,它只会显示 sql 表的第一行,尽管我有两行!!!

我的方法:

   public static int getBirthPercent(String i) throws SQLException {
Statement stmt = conn.createStatement();
List<String> list = null;
if (i.equals("O")) {


ResultSet rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
while (rst.next()) {
String s1 = rst.getString(1);
if (rst.wasNull()) {
s1 = null;
}
String s2 = s1.substring(s1.length() - 4);
int s3 = Integer.parseInt(s2);
if (list == null && s3 < 1970) {
list = new ArrayList<String>();
list.add(s2);

} else {
list = new ArrayList<String>(0);

}

}


}
if (i.equals("N")) {

ResultSet rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
while (rst.next()) {
String s1 = rst.getString(1);
if (rst.wasNull()) {
s1 = null;
}
String s2 = s1.substring(s1.length() - 4);
int s3 = Integer.parseInt(s2);
if (list == null && s3 > 2000) {
list = new ArrayList<String>();
list.add(s2);
System.out.println(list);

} else {
list = new ArrayList<String>(0);

}

}
}

对于所有“if”情况,它都会返回“0”,但 System.out.println() 会显示 [2006],这是我的行列的年份之一,尽管我有两行,但它必须显示 [2006,2009] ].但事实并非如此!!!

最佳答案

现在尝试此代码,并告诉我们。干杯。

   public static int getBirthPercent(String i) throws SQLException {

Statement stmt = conn.createStatement();
ResultSet rst = null;
List<String> list = new ArrayList<String>();
if (i.equals("O")) {
rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
while (rst.next()) {
String s1 = rst.getString(1);
if (s1 != null && !s1.isEmpty()) {
String s2 = s1.substring(s1.length() - 4);
int n = Integer.parseInt(s2);
if (n < 1970) {
list.add(s2);
}
}
}
}
if (i.equals("N")) {
rst = stmt.executeQuery("SELECT dateOfBirth from birthtable");
while (rst.next()) {
String s1 = rst.getString(1);
if (s1 != null && !s1.isEmpty()) {
String s2 = s1.substring(s1.length() - 4);
int n = Integer.parseInt(s2);
if (n > 2000) {
list.add(s2);
}
}
}
}

System.out.println(list);

}

现在重构已经足够了。尝试为自己做更多事情。例如,

  • 研究commons-lang StringUtils来取代空检查,
  • 使用 Date 对象存储日期并使用 rs.getDate() 代替,
  • 您可以使用 Calendar 对象来获取年份。或者甚至 SimpleDateFormat 对象也可以工作
  • 等等...

关于java - SQL和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1920048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com