如何去除 SQL 结果中 java 中的空值?
How do I get rid of null values in my SQL results in java?
我真的很难解决这个问题,如果可以的话请帮助我。
这个方法的作用是,它通过执行 SQL 查询检索我在数据库中的标签,将结果存储在 ArrayList 中,然后 return 它。
我的数据库包含 3 个属性:名称、标签、位置。我只想检索标签并单独显示它们而不显示其他属性,所以它就像这种格式,例如 [tag1,tag2,tag3]
并且由于我的 toString 方法中的格式是这样的,我无法将其更改为仅打印标签,因为我有另一种方法可以一起显示所有这些属性。
@Override
public String toString()
{
String p = (this.Name + ','+ this.Location+','+ this.Tag);
return p;
}
当我选择 select 仅输出标签时,我得到其他属性的空值,我得到的结果如下:[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.Location+ ",";}
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();
}
我相信这会对你有所帮助。
我真的很难解决这个问题,如果可以的话请帮助我。
这个方法的作用是,它通过执行 SQL 查询检索我在数据库中的标签,将结果存储在 ArrayList 中,然后 return 它。
我的数据库包含 3 个属性:名称、标签、位置。我只想检索标签并单独显示它们而不显示其他属性,所以它就像这种格式,例如 [tag1,tag2,tag3]
并且由于我的 toString 方法中的格式是这样的,我无法将其更改为仅打印标签,因为我有另一种方法可以一起显示所有这些属性。
@Override
public String toString()
{
String p = (this.Name + ','+ this.Location+','+ this.Tag);
return p;
}
当我选择 select 仅输出标签时,我得到其他属性的空值,我得到的结果如下:[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.Location+ ",";}
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();
}
我相信这会对你有所帮助。