当我从数据库中提取数据时,所有内容都填充了我的表格“tblSoftware”。
当while(rs.next())运行时,是否可以在“rs.getString(”Host_Name“)))中捕获空值?并在将值添加到表之前更改该值?
提前致谢。
来自我的SoftwareController
public void initialize(URL location, ResourceBundle resources) {
try {
data = FXCollections.observableArrayList();
conn = DBconnection.makeConnection();
statement = conn.createStatement();
String SQL = "SELECT * FROM Data_CMDB_Main";
ResultSet rs = statement.executeQuery(SQL);
while (rs.next()) {
data.add(new Software(rs.getString("CI_ID"),
rs.getString("Name"),
rs.getString("Operating_System"),
rs.getString("Serial_Number"),
rs.getString("Location_Line_1"),
rs.getString("Cabinet"),
rs.getString("Host_Name")));
/*if (rs.getString("Host_Name").equals(null)) {
//System.out.println("null found");
rs.equals("");
}
else
{*/
CI_IDcol.setCellValueFactory(new PropertyValueFactory("CI_ID"));
Namecol.setCellValueFactory(new PropertyValueFactory("Name"));
Operating_Systemcol.setCellValueFactory(new PropertyValueFactory("Operating_System"));
Serial_Numbercol.setCellValueFactory(new PropertyValueFactory("Serial_Number"));
Locationcol.setCellValueFactory(new PropertyValueFactory("Location_Line_1"));
Cabinetcol.setCellValueFactory(new PropertyValueFactory("Cabinet"));
Host_Namecol.setCellValueFactory(new PropertyValueFactory("Host_Name"));
tblSoftware.setItems(null);
tblSoftware.setItems(data);
模型类软件
public class Software {
private StringProperty CI_ID;
private StringProperty Name;
private StringProperty Operating_System;
private StringProperty Serial_Number;
private StringProperty Location_Line_1;
private StringProperty Cabinet;
private StringProperty Host_Name;
//public Software(String CI_ID, String Name, String Operating_System, String Serial_Number) {
public Software(String CI_ID, String Name, String Operating_System, String Serial_Number, String Location_Line_1, String Cabinet,
String Host_Name) {
this.CI_ID = new SimpleStringProperty(CI_ID);
this.Name = new SimpleStringProperty(Name);
this.Operating_System = new SimpleStringProperty(Operating_System);
this.Serial_Number = new SimpleStringProperty(Serial_Number);
this.Location_Line_1 = new SimpleStringProperty(Location_Line_1);
this.Cabinet = new SimpleStringProperty(Cabinet);
this.Host_Name = new SimpleStringProperty(Host_Name);
}
public StringProperty CI_IDProperty() {
return CI_ID;
}
public StringProperty NameProperty() {
return Name;
}
public StringProperty Operating_SystemProperty() {
return Operating_System;
}
public StringProperty Serial_NumberProperty() {
return Serial_Number;
}
public StringProperty Location_Line_1Property() {
return Location_Line_1;
}
public StringProperty CabinetProperty() {
return Cabinet;
}
public StringProperty Host_NameProperty() {
return Host_Name;
}
}
答案 0 :(得分:0)
我不确定我理解这个问题。你能不能做到,例如,
String name = rs.getString("Name");
if (name == null) {
name = "default name";
}
// ...
data.add(new Software(..., name, ...));
在Java 8中,您可以使用Optional
,例如
String name = Optional.ofNullable(rs.getString("Name")).orElse("default name");
答案 1 :(得分:0)
如果您使用的是java> = 8 rs.getString("Serial_Number") ?: "DEFAULT"
,如果不是,则需要使用三元运算符rs.getString("Serial_Number") != null ? rs.getString("Serial_Number") : "DEFAULT"
编辑:我查看了两次或更多次调用getString()
方法,看起来这种行为支持不是驱动程序所必需的,所以第二个例子可能有效。查看更多:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4080742。在这种情况下,您需要将其分配给变量以使用三元运算符。