Выполнить несколько запросов из текстового файла


Я просто интересно, если это правильный способ, чтобы выполнить несколько запросов из текстового файла.

Connection conn = Utility.getConnection();
Statement stmt = null;
try{
    JFileChooser chooser = new JFileChooser();
    int returnVal = chooser.showOpenDialog(chooser);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
       String fileName=chooser.getCurrentDirectory().toString()+File.separator+chooser.getSelectedFile().getName();
       FileInputStream fstream = new FileInputStream(fileName);
       DataInputStream in = new DataInputStream(fstream);
       BufferedReader br = new BufferedReader(new InputStreamReader(in));
       String strLine;
       if(conn != null)
           stmt = conn.createStatement();
       while ((strLine = br.readLine()) != null)   {
           if(stmt !=null){
               int rc=stmt.executeUpdate(strLine);
               if(rc == 0)
                   System.out.println("executing:  "+strLine);
           }                   
       }
       stmt.close();
       conn.close();
       in.close();
    }
}catch (Exception e){
    e.printStackTrace();
}


1204
4
задан 24 октября 2011 в 06:10 Источник Поделиться
Комментарии
1 ответ

Некоторые идеи:


  • Отдельный графический код от логики.

  • Если вы останетесь с вашей текущей смешанный код не быстро. Если Конн - это нуль, не имеет смысла открыть файл или попросить пользователя выбрать один из них.

  • JFileChooser.getSelectedFile() возвращает файл примеру, передать его FileInputStream прямо, не конкатенации строк. Файл содержит абсолютный путь.

  • Это хорошая практика, чтобы пройти кодировку (или "кодировка UTF-8") в конструктор InputStreamReader. По умолчанию может варьироваться от системы к системе.

  • В DataInputStream выглядит ненужным. Вы можете пройти FileInputStream в InputStreamReader напрямую.

  • Рекомендуется использовать гуавы в readLines.

  • Может быть, вы хотите сообщать обо всех выполненных запросов, поэтому , если (РК == 0) условие не является необходимым.

Плюс ему не хватает надлежащего исключением/обработка ошибок и ресурс закрывать, как другие упомянули в комментариях.

4
ответ дан 26 октября 2011 в 04:10 Источник Поделиться