簡體   English   中英

Java ResultSet getString怪異嗎?

[英]Java ResultSet getString weirdness?

這個讓我難過。

我有一個java.sql.ResultSet,並且像這樣從中拉出字符串值:

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

當我調試並檢查rs.getString(“ AddressLine1”)時,調試器說我有30個字符串:“ ATTN:ACCOUNTS PAYABLE”(刪除了空格)。 但是,當我在此行之后立即檢查我的地址對象時,它報告的是addressLine1是一個由30個字符串組成的空格或其他空白字符串。

當我調試並檢查rs.getString(“ AddressLine2”)時,調試器說我有23個字符串:“ 10 Something Street”(刪除了空格)。 當我在此行之后立即檢查我的地址對象時,報告的addressLine2為null

真正令我發瘋的是,並非每一個價值都發生了,只有幾個價值。

我的地址類正在存儲帶有完全笨拙的getter和setter的普通舊字符串。 真的,我保證! 這是剪切並粘貼的,其他啞屬性已刪除:

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;
 }
}

這到底是怎么回事? 這是某種奇怪的范圍界定問題嗎? 是某種字符編碼的東西嗎?

PS-我正在使用spring的SimpleJdbcTemplate,而我正在談論的“偽數據庫”是ProvideX,我正在通過ODBC(sun.jdbc.odbc.JdbcOdbcDriver)訪問它。

請注意javadocs關於ResultSet的說法:“為了獲得最大的可移植性,每行中的結果集列應以從左到右的順序讀取並且每列只能讀取一次 。” 因此,當您使用調試器讀取列時,即為一次讀取,然后在調用setAddressLine1時,代碼將第二次讀取該列。

當您僅查看addressLine1並且不理會ResultSet時,它的行為如何?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM