私は次のように機能する小さなコードを書きました:
- 入力ファイルを読み取る
AAA
その最初の行を読んで、特定の位置に値があるかどうかを確認します- 条件を満たしている場合は、メソッド
insertAAAmethod
を呼び出し、データをoracleテーブルにロードします - 挿入クエリが異なるレコード
BBB
呼び出しの場合は、次の行を読み取りますinsertBBBrmethod
insertAAAmethod
問題は、入力ファイルに15の異なるレコードがあるため、それぞれが異なる挿入クエリを持つ15の異なるメソッドがあることです。
public static void insertAAARecord() throws Exception {
String sqlQuery = "insert into my_table(ColumnA,ColumnB,ColumnC,ColumnD,ColumnE,ColumnF,ColumnG)"
+ "values (?,?,?,?,?,?,?)";
try {
pstmt = conn.prepareStatement(sqlQuery);
pstmt.setString(1, "AAA");
pstmt.setDate(2,
StringtoDate("AAA", CurrentLine.substring(150, 158)));
pstmt.setDate(3,
StringtoDate("AAA", CurrentLine.substring(158, 166)));
pstmt.setString(4, CurrentLine.substring(24, 34));
pstmt.setString(5, CurrentLine.substring(37, 45));
pstmt.setString(6, CurrentLine.substring(147, 150));
pstmt.setDate(7, headerDate);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace(System.out);
} finally {
pstmt.close();
}
}
SQLクエリをJavaコードから除外することは可能ですか?(たとえば、プロパティファイルのように)
注:挿入クエリは、レコード'AAA'の場合はレコードごとに変更され、レコードが異なる場合は1つの挿入クエリの後に続く必要があります。挿入クエリは変更する必要があります。
コードを最適化する方法を教えてください。