gpt4 book ai didi

java - 使用 MySQL 数据库中的数据填充 LocalDateTime 数组时遇到问题

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

我正在使用 MySQL 数据库来保存 Java 提醒应用程序的信息。我试图提取信息并将其存储在数组中,并将数组的每个元素与更新的当前时间戳进行比较。问题是我的代码给出了空指针异常,我不明白为什么。当 LocalDateTime 不是数组时它可以工作,但当我将其转换为数组时它会抛出错误。它还要求我将其初始化为空而不是其他任何东西。

关于如何解决这个问题的想法?如有任何帮助,我们将不胜感激。

这是有问题的方法。

public static LocalDateTime[] getReminderTime()
{
String SQL = "SELECT r_dateTime FROM reminder_database.reminder;";
LocalDateTime reminderTime[] = null;
try
{
Connection conn = main.getConnection();

java.sql.Statement stmt;
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL);

if(rs.isBeforeFirst())
{
for(int i = 0; rs.next(); i++)
{
reminderTime[i] = rs.getTimestamp(1).toLocalDateTime();
}
}

rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
System.out.println("Exception thrown with getReminderTime --> " + e + e.getStackTrace());
}
return reminderTime;
}

这是抛出的异常

Exception thrown with getReminderTime --> java.lang.NullPointerException[Ljava.lang.StackTraceElement;@6dfc1e5f
Exception thrown with getReminderTime --> java.lang.NullPointerException[Ljava.lang.StackTraceElement;@3b2da18f

最佳答案

找到了解决方案。

我需要初始化数组的大小才能填充它。因此,我创建了另一个方法来遍历所有元素并获取大小。

这是代码。

public static LocalDateTime[] getReminderTime()
{
String SQL = "SELECT r_dateTime FROM reminder_database.reminder;";
LocalDateTime reminderTime[] = null;
reminderTime = new LocalDateTime[getSizeOfRs()];
try
{
Connection conn = main.getConnection();

java.sql.Statement stmt;
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL);


if(rs.isBeforeFirst())
{

for(int i = 0; rs.next(); i++)
{
reminderTime[i] = rs.getTimestamp(1).toLocalDateTime();

}
}

rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
System.out.println("Exception thrown with getReminderTime --> " + e + e.getStackTrace());
}
return reminderTime;
}

以及获取 rs 大小

public static int getSizeOfRs()
{

String SQL = "SELECT * FROM reminder_database.reminder;";
int size = 0;
try {
Connection conn = main.getConnection();

java.sql.Statement stmt;
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQL);


for(int i = 0; rs.next(); i++)
size++;
}
catch(Exception e)
{
System.out.println("Exception thrown with getSizeofRS --> " + e + e.getStackTrace());
}

return size;
}

关于java - 使用 MySQL 数据库中的数据填充 LocalDateTime 数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61645944/

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