みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
GASからJDBCサービスを使ってCloud SQLのデータベースにアクセスする方法をシリーズでお伝えしています。
前回の記事はこちら。

GASのJDBCサービスと、それによるCloud SQLのデータベースへの接続についてお伝えしました。
ただ、まだデータベースに接続しただけで、データベースの操作をしたわけではありませんでした。
今回は、データベースの操作をすべく、接続したデータベースに対してSQLステートメントを実行する方法をお伝えしていきます。
GASのJDBCサービスでCloud SQLにSQLステートメントを実行する方法です。
では、行ってみましょう!
前回のおさらい
前回のコードはこちらです。
実行すると、指定のデータベースに接続し、「カタログ名」(MySQLの場合はデータベース名)がログで確認できます。
var connectionName = '*****データベース接続名*****'; //Instance_connection_name var userName = '*****ユーザー名*****'; //user_name var password = '*****パスワード*****'; //'user_password' var databaseName = 'guestbook'; //database_name var url = 'jdbc:google:mysql://' + connectionName + '/' + databaseName; function readFromTable() { var connection = Jdbc.getCloudSqlConnection(url, userName, password); Logger.log(connection.getCatalog()); connection.close(); }
データベース接続名は、GCPのCloud SQLを開けば取得可能です。
あとは、データベース名(今回のシリーズでは「guestbook」)、Cloud SQLインスタンスで設定したユーザー名とパスワードです。
さて、データベースの接続が完了しました。
JBDCサービスでは、接続したデータベースに対してSQLのステートメントで操作することができますので、以降でその方法を見ていきましょう。
JdbcStatementオブジェクトを作成する
SQLのステートメントを操作する役割を果たすのが、JdbcStatementオブジェクトです。
データベースへの接続を表すJbdcConnectionオブジェクトに対して、createStatementメソッドを使うことでJdbcStatementオブジェクトを作成することができます。
ですから、以下のようにするわけですね。
var statement = connection.createStatement();
SQLステートメントを実行する
続いて、JdbcStatementオブジェクトを使って、SQLステートメントを実行します。
その役割を果たすのが、executeQueryメソッドです。
引数に、SQLを文字列として指定すると、データベースに対してそのSQLを実行します。
この命令として渡すSQLを「クエリ」と言ったりしますね。なので、executeQueryメソッドなのですね。
なお、戻り値はそのSQLの実行結果を表すJdbcResultSetオブジェクトを返します。
例えば、以下のようにすることで、現在のデータベースのテーブル「entries」のすべてのレコードを取り出すことができます。
var results = statement.executeQuery('SELECT * FROM entries');
このSQLはSELECT文ですが、他のSQL文を使えば、executeQueryメソッドだけでレコードの追加、削除、更新などさまざまな操作を行うことができます。
便利っすね!
JdbcResultSetオブジェクト・JdbcStatementオブジェクトを閉じる
JdbcResultSetオブジェクトおよびJdbcStatementオブジェクトは、スクリプト終了後にJbdcConnectionオブジェクトと同様、自動で閉じるとされています。
ただ、これらも明示的に閉じる操作をしたほうが良いと推奨されているので、以下closeメソッドでそれぞれ閉じるようにしましょう。

接続したデータベースにクエリを実行するコード
では、これまでのまとめです。
まとめると以下のコードのようになります。
var connectionName = '*****データベース接続名*****'; //Instance_connection_name var userName = '*****ユーザー名*****'; //user_name var password = '*****パスワード*****'; //'user_password' var databaseName = 'guestbook'; //database_name var url = 'jdbc:google:mysql://' + connectionName + '/' + databaseName; function readFromTable() { var connection = Jdbc.getCloudSqlConnection(url, userName, password); var statement = connection.createStatement(); var results = statement.executeQuery('SELECT * FROM entries'); //結果を取り出す処理 results.close(); statement.close(); connection.close(); }
結果を取り出す処理については、次回で紹介していきます。
まとめ
以上、GASのJDBCサービスでCloud SQLにSQLステートメントを実行する方法をお伝えしました。
使用するオブジェクトが多くて面倒に思えるかもしれませんが、JbdcConnectionオブジェクトオブジェクトとJdbcStatementオブジェクトについて、それぞれの役割を確認しておいてください。
JdbcResultSetオブジェクトについては、次回その中身を解き明かしていきます。
どうぞお楽しみに!