使用MySQL连接器Java改进查询
当我必须在Java中处理MySQL数据库时,我使用MySQL本身开发的驱动程序。使用这个库很容易,但我对性能有一个问题。每次对数据库进行查询时,应该使用什么“关闭”方法 例如,如果我有一个for循环,它在DB中进行更多的插入,我应该使用什么使用MySQL连接器Java改进查询,java,mysql,jdbc,Java,Mysql,Jdbc,当我必须在Java中处理MySQL数据库时,我使用MySQL本身开发的驱动程序。使用这个库很容易,但我对性能有一个问题。每次对数据库进行查询时,应该使用什么“关闭”方法 例如,如果我有一个for循环,它在DB中进行更多的插入,我应该使用什么 private void invioInsert(String query){ try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (Exce
private void invioInsert(String query){
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception E) {
System.err.println("Non trovo il driver da caricare.");
E.printStackTrace();
}
try {
PreparedStatement statement = conn.prepareStatement(query);
statement.execute();
statement.close();
} catch (SQLException E) {
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
}
例如,For循环可以是:
for(int i=0; i<=10, i++){
String query = "INSERT TABLE VALUES ("+i+")";
sendQuery(query);
}
for(int i=0;i这是批处理执行的PreparedStatement
的经典用例:
String query = "INSERT TABLE VALUES (?)";
try {
PreparedStatement statement = conn.prepareStatement(query);
for(int i=0; i<=10, i++){
statement.setInt(1, i);
statement.addBatch();
}
statement.executeBatch();
statement.close();
} catch (SQLException E) {
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
String query=“插入表值(?”;
试一试{
PreparedStatement=conn.prepareStatement(查询);
for(int i=0;i永远不要在循环内创建PreparedStatement。
尝试在外部创建语句,您会有很大的改进。您是在准备语句还是只是简单的插入?我无法从您的代码中分辨出来,因为您同时引用了这两个语句。我插入了我使用的完整代码(因此是for循环)。这是一个注释,而不是答案。
String query = "INSERT TABLE VALUES (?)";
try {
PreparedStatement statement = conn.prepareStatement(query);
for(int i=0; i<=10, i++){
statement.setInt(1, i);
statement.addBatch();
}
statement.executeBatch();
statement.close();
} catch (SQLException E) {
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}