使用MySQL连接器Java改进查询

使用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

当我必须在Java中处理MySQL数据库时,我使用MySQL本身开发的驱动程序。使用这个库很容易,但我对性能有一个问题。每次对数据库进行查询时,应该使用什么“关闭”方法

例如,如果我有一个for循环,它在DB中进行更多的插入,我应该使用什么

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());
}