私は知っています、この質問は既に尋ねられています。しかし、私はまだ準備の声明が実行時間に影響を与えなかった理由を知りませんでした。は、Javaのパフォーマンスに関する文の効果を準備しました
Connection conn=null;
Statement stmt=null;
public Database(){
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager
.getConnection("jdbc:sqlite:***");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
public void insert(String [] data){
try {
String query = "INSERT INTO tableName "
+ "VALUES ('"+data[0]+"',"+"'"+data[1]+"',"+Double.parseDouble(data[2])+","+
Double.parseDouble(data[3])+","+Double.parseDouble(data[4])+","+
Double.parseDouble(data[5])+")";
stmt =conn.createStatement();
stmt.executeUpdate(query);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
まず、このメソッドを挿入式を実行しようとしました。次に、準備文が実行時間に良い影響を与えることを学びました。それから私は、法の下に使用してプログラムを試してみました:
Connection conn=null;
PreparedStatement preStmt=null;
private String queryTemplate = "insert into tableName values(?,?,?,?,?,?)";
public Database(){
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager
.getConnection("jdbc:sqlite:***");
preStmt = conn.prepareStatement(queryTemplate);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
public void insert(String [] data){
try {
preStmt.setString(1,data[0]);
preStmt.setString(2,data[1]);
preStmt.setDouble(3,Double.parseDouble(data[2]));
preStmt.setDouble(4,Double.parseDouble(data[3]));
preStmt.setDouble(5,Double.parseDouble(data[4]));
preStmt.setDouble(6,Double.parseDouble(data[5]));
preStmt.addBatch();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
public void ExecuteBatch()
{
try {
preStmt.executeBatch();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
私はbtw.Iは、実行時間を短縮することがexecuteBatchとaddBatchメソッドを使用したSQLiteデータベースを使用しています。しかし、それはまだ、最初のものより悪いです。誰かが私にそれを説明することができますか?ありがとう:)
[あなたがStatementオブジェクトを実行したい場合は**何度**、それは通常の代わりにPreparedStatementオブジェクトを使用するために実行時間を短縮](http://docs.oracle.com/javase /tutorial/jdbc/basics/prepared.html)。 –