我真的很想解决这个问题,如果可以,请帮助我。
此方法的作用是,它通过执行SQL查询来检索我在数据库中拥有的标签,并将结果存储在ArrayList中,然后将其返回。
我的数据库包含3个属性:名称,标签,位置。我只想检索标签并单独显示它们而不显示其他属性的地方,因此就像这种格式,例如[tag1,tag2,tag3]
而且因为我的toString方法中的格式是这样,所以我不能将其更改为仅打印标签,因为我还有另一种方法可以一起显示所有这些属性。
@Override
public String toString()
{
String p = (this.Name + ','+ this.Location+','+ this.Tag);
return p;
}
当我选择仅选择输出标签时,我得到其他属性的空值,并且得到如下结果:[null,null,rfid1,null,null,rfid2,null,null,rfid3]
所以我如何摆脱这些空值而只显示标记位?
我获取标签值的方法:
public ArrayList<wallet> getWalletTag() throws SQLException {
System.out.println("----------------");
System.out.println("Retrieve all tags");
Connection dbConnection = null;
Statement statement = null;
ResultSet resultset = null;
String query = "SELECT Tag FROM wallets;";
ArrayList<wallet> WalletsList = new ArrayList<>();
try {
dbConnection = getDBConnection();
statement = dbConnection.createStatement();
System.out.println(query);
resultset = statement.executeQuery(query);
while (resultset.next()) {
//String Name = resultset.getString("Name");
//String Loc = resultset.getString("Location");
String tag = resultset.getString("Tag");
WalletsList.add(new wallet (tag));
}
}
finally {
if (resultset !=null){
resultset.close();
}
if (statement !=null) {
statement.close();
}
if (resultset !=null) {
dbConnection.close();
}
}
return WalletsList;
}
我的控制器代码:
walletDAO dao2 = new walletDAO();
ArrayList<wallet> u ;
try{
u=dao2.getWalletTag();
这里只是一个简短而又肮脏的修复-肯定有更好,更合适的解决方案... :)
//quick and dirty fix
@Override
public String toString()
{
String NameHandle = "";
String LocationHandle = "";
if(this.Name!=null): NameHandle = this.Name + ",";
if(this.Location!=null): LocationHandle = this.Name + ",";
String p = (this.Name + this.Location + this.Tag);
return p;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if(Objects.nonNull(this.name)) {
sb.append(this.name+",");
}
if(Objects.nonNull(this.location)) {
sb.append(this.location+",");
}
if(Objects.nonNull(this.tag)) {
sb.append(this.tag);
}
return sb.toString();
}