PreparedStatement не вставляет данные в базу данных MySQL - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть следующая база данных:

CREATE TABLE b (
    name VARCHAR(255) NOT NULL,
    text MEDIUMTEXT NOT NULL,
    PRIMARY KEY (NAME)
);

И у меня есть следующий код:

public void saveBlocks(Map<String, Block> blocks) throws SQLException{
    String userInsertQuery = "Insert INTO b (name, text) VALUES (?, ?)";
    preparedStatement = connect.prepareStatement(userInsertQuery);
    int batchCounter = 0;
    for(Block block : blocks.values()){
        preparedStatement.setString(1,block.getId());
        preparedStatement.setString(2,block.getText());
        preparedStatement.addBatch();
        batchCounter++;
        if(batchCounter%200 == 0) {
            preparedStatement.executeBatch();
        }
    }
    preparedStatement.executeBatch();

}

Но он ничего не записывает в базу данных.У меня есть почти такой же код для другой таблицы, и там он работает без проблем.Единственное отличие заключается в количестве вставок, которые я делаю (в рабочем случае: более 1 миллиона, в нерабочем случае: около 70)

Я не могу найти решение, и у меня нет идей.

То, что я пытался: - connect.commit () =>, так как у меня есть autocommit true без изменений.(или я использую это неправильно?) - У меня нет автоматического увеличения ключа, поэтому проблем нет.

У вас есть идеи?

1 Ответ

0 голосов
/ 22 ноября 2018

Вы должны, наконец, commit транзакции с:

connect.commit();

с connect.setAutoCommit(false);

String userInsertQuery = "Insert INTO b (name, text) VALUES (?, ?)";
preparedStatement = connect.prepareStatement(userInsertQuery);
connect.setAutoCommit(false);
int batchCounter = 0;
for(Block block : blocks.values()){
    preparedStatement.setString(1,block.getId());
    preparedStatement.setString(2,block.getText());
    preparedStatement.addBatch();
    batchCounter++;
}
int[] results = preparedStatement.executeBatch();
connect.commit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...