代码之家  ›  专栏  ›  技术社区  ›  Boden

Java结果集getString奇怪吗?

  •  0
  • Boden  · 技术社区  · 15 年前

    address.setAddressLine1(rs.getString("AddressLine1"));
    address.setAddressLine2(rs.getString("AddressLine2"));
    

    当我调试并检查rs.getString(“AddressLine1”)时,调试器会说我有一个30个字符的字符串:“ATTN:ACCOUNTS Payment”(尾部空格已删除)。但是,当我在这一行之后立即检查address对象时,它报告addressLine1是一个30个字符的字符串 空间

    当我调试并检查rs.getString(“AddressLine2”)时,调试器会说我有一个23个字符的字符串:“10个街道”(尾部空格已删除)。当我在这行之后立即检查address对象时,它报告addressLine2为 无效的 .

    真正让我抓狂的是,并不是所有的价值观都会发生这种情况,只有少数价值观。

    public class Address implements java.io.Serializable {
    
     private static final long serialVersionUID = 1L;
     private String addressLine1; 
     private String addressLine2; 
    
     public String getAddressLine1() {
      return addressLine1;
     }
    
     public void setAddressLine1(String addressLine1) {
      this.addressLine1 = addressLine1;
     }
    
     public String getAddressLine2() {
      return addressLine2;
     }
    
     public void setAddressLine2(String addressLine2) {
      this.addressLine2 = addressLine2;
     }
    }
    

    1 回复  |  直到 14 年前
        1
  •  4
  •   lumpynose    15 年前

    请注意javadocs对ResultSet的描述:“为了最大限度地提高可移植性,每行中的结果集列应按从左到右的顺序读取, “因此,当您使用调试器读取列时,这是一次读取,然后在调用setAddressLine1时,您的代码会再次读取该列。

    当您只查看addressLine1而不处理结果集时,它是如何工作的?