我一直在尝试将csv文件(包含空字段)导入数据库,方法是使用文件选择器选择该文件。使用filechooser很重要,因为它是学校使用的一个程序,他们希望能够通过导入自己拥有的excel/csv文件,每年导入新的学生记录。每当我运行下面给出的代码时,都会出现以下错误:
SEVERE: null
java.lang.NullPointerException
at gui.FXMLStudentController$1.run(FXMLStudentController.java:86)
at java.lang.Thread.run(Thread.java:745)
我想问题是显而易见的。我如何使它在没有错误的情况下工作?
进口商类:
public class ImportStudents
{
private File file;
private List<Student> students = new ArrayList<>();
public ImportStudents(File file) throws IOException
{
this.file = file;
}
public List importStudents() throws FileNotFoundException, IOException
{
try(CSVReader reader = new CSVReader(new FileReader(file), ';'))
{
String[] nextLine;
boolean notFirst = false;
while ((nextLine = reader.readNext()) != null) {
if (notFirst) {
students.add(new Student(nextLine[3], nextLine[1], nextLine[0],nextLine[2]));
}
notFirst = true;
}
}catch(Exception e)
{
e.printStackTrace();
}
return students;
}
}
按下导入按钮时的GUI代码:
@FXML
private void importeer(ActionEvent event)
{
Stage stage = new Stage();
ImportStudents = importStudents; //importStudents created earlier in the class
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Open File");
try
{
importStudents = new ImportStudents(fileChooser.showOpenDialog(stage));
new Thread(new Runnable() {
@Override
public void run()
{
try
{
repository.importStudents(importStudents.importeerLeerlingen());
}
catch(Exception e)
{
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, e);
}
}
}).start();
}
catch(Exception e)
{
}
}
存储库中的代码:
public void importStudents(List<Student> students)
{
try{
em.getTransaction().begin();
for (Student : students)
{
em.persist(student);
}
em.getTransaction().commit();
}
finally
{
em.close();
}
}
我尝试以这种方式导入csv文件中的示例:正如您所看到的,电子邮件大多数时候都是空的(这是针对幼儿园的),但对于某些情况,它是给定的。
SurName;Name;E-mail;Class
Agacseven;Tuana;;3KA
Ahmedov;Arman;;2KC
Akcan;Efe;;3KA
Akcan;Hanzade;;2KC
Akhtar;Hussain;;1KA
学生构造函数看起来像这样
public Student(String class, String name, String surNaam, String email)
{
this.class = class;
this.name = name;
this.surNaam = surNaam;
this.email = email;
}
学生构造函数看起来怎么样?如果分隔符之间没有任何内容,我很难在javadocs中找到值为readNext()的字符串引用。它可以是空字符串,也可以是空字符串(看起来是空的)。在这种情况下,可能是在学生构造函数中使用该值所做的操作对于null值是不合法的。
编辑
如果是这种情况,您可以在构造函数中处理null值的传递,也可以编写一个类似以下内容的静态方法:
public static String Convert(String str) {
return str == null ? "" : str;
}
在实例化学生时,请执行以下操作:
new Student(Convert(nextLine[3]), ... );
我目前有一个字符串生成器,用于导出到csv文件。CSV文件中导出的值在somw值中包含逗号。 有时,数据包含一个“,”导致其生成错误。 这会生成导出,但如何在一列中显示带有逗号的数据
问题内容: 我正在制作基于文本的骰子滚轴。它接受“ 2d10 + 5”之类的字符串,并作为滚动结果返回一个字符串。我的问题出现在令牌生成器中,该令牌生成器将字符串拆分为有用的部分,以便我解析为信息。 这会产生奇怪的意外结果。我不知道是什么原因造成的。可能是正则表达式,我的误解,或者Java只是Java。这是正在发生的事情: 产生字符串数组。这是对的。 产生字符串数组。这是对的。 产生字符串数组。这
如何获取数组中仅包含1个给定匹配的文档索引? 例如,如果我的数组是 现在如何获得的第一个文档的索引? 我试过了 但这似乎不起作用,它给了我。
问题内容: 我正在使用将CSV导入MySQL表。表格的字段之一存储着我在表格结构中定义的邮政编码数据。 在CSV中,此字段有时为空。当我执行查询时,MySQL将发出如下警告: 我尝试将字段重新定义为,这会创建相同的警告,而MySQL不允许。有什么建议吗? 问题答案: 空值被解释为空字符串(’‘),而不是NULL,因此未使用默认值。 如果要显式控制这些空字符串的处理,最好的办法是将它们加载到用户变量
我试图解析JSON结果从Wordpress插件API使用RetroFit2和GSON。我使用著名的网站生成了我的POJO,并将其修改为以下模型: 插件ApiResponse.java 插件。JAVA 截图。JAVA _1.java(_2.java_3.java相同) 如果屏幕截图字段不包含任何条目,则会出现问题。我已经设置了HttpLoggingInterceptor,它完整地记录响应代码200和
我有一个第三方包。我不能以任何方式修改。包包含以下类: 如果我从的包调用此方法,它将失败,因为不在包的类路径上。 我可以简单地添加一个片段来修改bundle的类路径吗?还是这种依赖关系只适用于片段内的类? 长话短说:当在主机包的类中执行时,OSGi中的的语义是什么?是否包括: 问:捆绑类?A:是的。 问:片段中包含的类?A:是的。来源 问:导入的包和从所需包导出的包?A:是的。 问:导入的包裹和导