通常は、自動コミットされるので、Update文やInsert文を実行したタイミングで、コミットされる。DBへの複数の書き込み処理を、同じタイミングで行うのは、自動コミットをオフにして、手動でコミットする必要がある。
自動コミットを無効にするには、DBコネクションの「.setAutoCommit(false)」を使用する。
手動でコミットするには、DBコネクションの「.commit()」を使用する。
試してみたところ、オートコミットをオフにした場合、「.commit()」を実行しなくても、エラーにはならない。GASのエディタ上でもアラートを上げてくれないので、注意が必要。
サンプルコード
function myFunction() {
dbConnection();
}
// --------------------------------
// SSL 接続なしで接続する
// --------------------------------
function dbConnection(){
Logger.log('start dbConnection function.');
// 接続先設定
var connectionIp = 'xxx.xxx.xxx.xxx'; // 接続のMysqlのIPアドレス(ホスト名も可)
var userName = 'user'; // 接続で使うユーザ名
var passwd = 'password'; // 接続で使うパスワード
var databaseName = 'database'; // データベース名
var addr = 'jdbc:mysql://' + connectionIp + '/' + databaseName;
Logger.log('start mysql con');
Logger.log(addr);
var connectionInfo = {
user: userName,
password: passwd
}
// DBにコネクションをはる
var connection = Jdbc.getConnection(addr, connectionInfo);
Logger.log(connection.getCatalog());
// オートコミットを無効にして、手動でコミットするようにする。
connection.setAutoCommit(false);
// sqlステートメントをデータベースに送信するためのオブジェクトを作る
var statement = connection.createStatement();
// Insert文を発行
var resultInsert = statement.executeUpdate('Insert Into List (id,listname) values ("5","kanagawa")');
// 実行結果が0なら失敗、1以上なら成功
Logger.log(resultInsert);
// 手動でコミットする。通常はオートコミットされるので必要なし。
connection.commit();
// ステートメントを閉じる
statement.close();
// コネクションを閉じる
connection.close();
}