2016-06-16 12 views
1

JDK 6を使用してJARファイルをビルドする必要があります。これは、会社のラップトップで使用され、 ITの人々を通して。Javaを使用してCSVReaderのtry-with-resourcesエラーを解決する方法6

だから、どのようにこの方法のためのtry-と資源のエラーを回避するには:

は、Javaを使用するように強制している場合のtry-とリソース構文は唯一のJava 7で導入されました
public static String importFile(String filepath){ 
    String insertQuery = "INSERT INTO SALESMAN VALUES (?,?)"; 
    String status; 

    try (CSVReader reader = new CSVReader(new FileReader(filepath), ','); //error here 
     Connection connection = DBConnection.getConnection();){ 
     Statement stmt = connection.createStatement(); 

     PreparedStatement pstmt = connection.prepareStatement(insertQuery); 
     String[] rowData = null; 

     int i = 0; 
     while((rowData = reader.readNext()) != null){ 
      for (String data : rowData){ 
       pstmt.setString((i % 2) + 1, data); 
       if (++i % 2 == 0) 
        pstmt.addBatch(); 
       if (i % 20 == 0) 
        pstmt.executeBatch(); 
      } 
     } 
     status = "Successfully uploaded"; 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

    return status;   
} 

答えて

4

状況について「CSVReader」コンストラクタが例外をスローしたときに何

CSVReader reader = null; 
try { 
    reader = new CSVReader(new FileReader(filepath), ','); 
    // Code from the original try block, removed for brevity's sake 
} catch (Exception ex) { 
    ex.printStackTrace(); // Or some useful error handling 
} finally { // closing the reader in the finally block 
    if (reader != null) { 
     reader.close(); 
    } 
} 
+0

:6、あなたは古き良きfinally句に頼る必要があるだろうか?これにより、閉じられていない 'FileReader'オブジェクトが残されます。 – Grogi

+0

@GrogiこれはOPでも処理されなかったので、私はそれに対処しませんでした。一般的に言えば、 'try'ブロックの外に**宣言された**すべてのリソース参照変数をそれらの中で**初期化し、' finally'ブロック内でそれをそれらの順序と逆の順序で閉じる必要がありますで初期化されました。 – Mureinik

関連する問題