代碼我繼承了許多功能的Java代碼中有這種形式的許多交易代碼方法:你會如何去優化(無碼重複),其中有這類
public void addCourseToCourses(String values)
{
try
{
conn.setAutoCommit(false);
}
catch (SQLException e)
{
Logger.getLogger(connDb.class.getName()).log(Level.SEVERE, null, e);
return;
}
try
{
stmt.executeUpdate("insert into courses values " + values);
conn.commit();
}
catch (SQLException e)
{
try
{
conn.rollback();
}
catch (SQLException ex)
{
Logger.getLogger(connDb.class.getName()).log(Level.SEVERE,null, ex);
}
}
finally
{
try
{
conn.setAutoCommit(true);
}
catch (SQLException ex)
{
Logger.getLogger(connDb.class.getName()).log(Level.SEVERE,null, ex);
}
}
}
如果這一方法之間不同的可變部分是
stmt.executeUpdate("insert into courses values " + values);
有時是幾個插入,有時候是刪除。 我錯過了使用來自C++的宏,但我確信有一種方法不會爲每種方法重複所有這些事務代碼。
有幫助嗎?
(康涅狄格州和語句是類型java.sql.Connection中和java.sql.Statement中的類成員)
重複?我沒有看到任何重複。每個** catch塊**都做了一項獨特的工作。重複在哪裏? – 2012-01-11 14:43:49
重複的是,有許多方法像上面每個人都有一個不同的'可變部分'上面顯示 – thedrs 2012-01-11 14:46:49
除了排除日誌和事務處理等常見任務的問題之外,考慮使用PreparedStatements而不是字符串。 – Ingo 2012-01-11 14:51:20