GASからMySQLに接続して、コミットする

通常は、自動コミットされるので、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();
}
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする