我使用sqlite存儲聊天記錄我現在擔心天氣我的方法是線程安全的。Java線程安全的Sqlite?
下面的方法是我用來將我的消息添加到數據庫的方法。
我的方法是線程安全的嗎?
public class dbHistory {
public synchronized void addMessage(String from, String agentName, String msg, String time, String channel) {
try {
String databaseFileLocation = "jdbc:sqlite:history_" + agentID + ".db";
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection(databaseFileLocation);
PreparedStatement prep = conn.prepareStatement("insert into history values (?, ?, ?, ?, ?);");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Calendar cal = Calendar.getInstance();
prep.setString(1, channel);
prep.setString(2, from);
prep.setString(3, msg);
prep.setString(4, agentName);
prep.setString(5, dateFormat.format(cal.getTime()));
prep.addBatch();
conn.setAutoCommit(false);
prep.executeBatch();
conn.setAutoCommit(true);
conn.close();
} catch (Exception ex) {
System.out.println(ex);
}
}
}
我怎麼能建立一個連接,我可以重用? – Alosyius
@Alosyius,例如,您可以使用連接池。你可以手動編寫它們,或者你可以使用已知的花費像c3p0 http://sourceforge.net/projects/c3p0/ – omickron