2011-02-28 128 views
1

如何在CsvJdbc中啓用ResultSet.getRow()?Csv Jdbc:ResultSet.getRow()不受支持

(這是應該返回當前行數的函數)

它似乎依賴一個isScrollable構件上。如果以前有人遇到過這個問題,你如何解決它?

  • 這是我需要在Properties傳入的對象中設置的屬性嗎?
  • 我需要「消毒」還是以某種方式修改我的CSV文件?

謝謝!


更多信息

我使用有任何JDBC源導入數據的能力的應用程序。我需要從CSV文件中獲取一些數據,因此我使用CsvJdbc。這個應用程序需要訪問它導入的每一行數據的行號,不幸的是CsvResultSet#getRow()拋出一個異常,抱怨「Csv Jdbc:ResultSet.getRow()不受支持」。

以下是impl。在CsvJdbc的getRow()方法(1.0.5)

/** 
* Retrieves the current row number. The first row is number 1, the 
* second number 2, and so on. 
* 
* @return the current row number; <code>0</code> if there is no current row 
* @exception SQLException if a database access error occurs 
*/ 
public int getRow() throws SQLException { 
    if (this.isScrollable == ResultSet.TYPE_SCROLL_SENSITIVE) { 
     return currentRow; 
    } else { 
     throw new UnsupportedOperationException(
      "ResultSet.getRow() unsupported"); 
    } 
} 

通過源的其餘部分尋找的似乎是,isScrollable構件屬性設置的唯一地方是在構造和作爲默認值。

+0

我一直在研究CSV查詢SQL .. CsvJdbc是否滿足通常的SQL要求(例如'ORDER BY','GROUP BY','JOIN'等)?如果不是,你用它來實現這個目標?謝謝 – 2011-09-21 13:26:58

回答

2

你有沒有嘗試創建一個可滾動的聲明...

語句stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,爲ResultSet.CONCUR_READ_ONLY);