处理ResultSet中的空值

时间:2012-06-30 12:00:18

标签: javascript ado

我使用以下代码从数据库中检索值:

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        output.innerHTML += rs.fields( "Name" ) + ","
        output.innerHTML += rs.fields( "Address" ) + "<br>"
        rs.MoveNext();
    }
}

但是如果Address为null则写入:

Sherlock Holmes, 221B Baker Street
James Moriarty, null

我尝试过使用:

if( rs.fields( "Address" ) != null && rs.fields( "Address" ) != "" )

如何使空值显示为空字符串?

5 个答案:

答案 0 :(得分:2)

试试这个:

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        output.innerHTML += (rs.fields( "Name" ) || "") + ","
        output.innerHTML += (rs.fields( "Address" ) || "") + "<br>"
        rs.MoveNext();
    }
}

使用logical Or将其更改为空字符串

答案 1 :(得分:0)

像这样修改代码

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        var name = rs.fields( "Name" ) ;
        var address = rs.fields( "Address" ) ;
        output.innerHTML += (name == null ) ? "" : name  ;
        output.innerHTML += (address == null ) ? "" : address + "<br>" ;
        rs.MoveNext();
    }
}

答案 2 :(得分:0)

编写一个帮助函数以保持整洁:

function field_maybe(rs, fname) {
    return rs.fields(fname) || "";
}

...

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        output.innerHTML += field_maybe(rs, "Name") + ","
        output.innerHTML += field_maybe(rs, "Address") + "<br>"
        rs.MoveNext();
    }
}

答案 3 :(得分:0)

试试这个:

if( !rs.bof ){
     rs.MoveFirst();
     while ( !rs.eof ){
        var name=  (rs.fields( "Name" ) === null)?"":rs.fields( "Name" );
        var address=  (rs.fields( "Address" ) === null)?"":rs.fields( "Address" );
        output.innerHTML += name + ","
        output.innerHTML += address + "<br>"
        rs.MoveNext();
    }
}

答案 4 :(得分:0)

这是一个相当古老的主题/问题,但实际上我遇到了同样的问题,而且我确实以前做过这个问题。这些答案似乎都不适合实际问题。

问题是rs.fields(&#34; Address&#34;)永远不会评估为null或false。

因此,如果我们采取OP评估声明:

if( rs.fields( "Address" ) != null && rs.fields( "Address" ) != "" )

它确实会变得真实;你需要检查值:

if(rs.fields( "Address" ).value){...}

如果没有,它将返回false,不像其他解决方案都会遇到同样的问题,它总是评估为真。

希望它可以帮助其他任何人解决这个小问题。 :)