Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2077

GASのJDBCサービスでCloud SQLにSQLステートメントを実行する方法

$
0
0
execute

photo credit: Marcin Wichary Execute via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASからJDBCサービスを使ってCloud SQLのデータベースにアクセスする方法をシリーズでお伝えしています。

前回の記事はこちら。

GASのJDBCサービスでCloud SQLデータベースに接続をする方法
GASからJDBCサービスを使ってCloud SQLのデータベースにアクセスする方法をシリーズでお伝えしています。今回は、実際にJDBCサービスでデータベースに接続をして、その接続を確認していきます。

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オブジェクトを作成することができます。

JbdcConnectionオブジェクト.createStatement()

ですから、以下のようにするわけですね。

var statement = connection.createStatement();

SQLステートメントを実行する

続いて、JdbcStatementオブジェクトを使って、SQLステートメントを実行します。

その役割を果たすのが、executeQueryメソッドです。

JdbcStatementオブジェクト.executeQuery(SQL)

引数に、SQLを文字列として指定すると、データベースに対してそのSQLを実行します。

この命令として渡すSQLを「クエリ」と言ったりしますね。なので、executeQueryメソッドなのですね。

なお、戻り値はそのSQLの実行結果を表すJdbcResultSetオブジェクトを返します。

例えば、以下のようにすることで、現在のデータベースのテーブル「entries」のすべてのレコードを取り出すことができます。

var results = statement.executeQuery('SELECT * FROM entries');

このSQLはSELECT文ですが、他のSQL文を使えば、executeQueryメソッドだけでレコードの追加、削除、更新などさまざまな操作を行うことができます。

便利っすね!

JdbcResultSetオブジェクト・JdbcStatementオブジェクトを閉じる

JdbcResultSetオブジェクトおよびJdbcStatementオブジェクトは、スクリプト終了後にJbdcConnectionオブジェクトと同様、自動で閉じるとされています。

ただ、これらも明示的に閉じる操作をしたほうが良いと推奨されているので、以下closeメソッドでそれぞれ閉じるようにしましょう。

JdbcResultSetオブジェクト.close()
JdbcStatementオブジェクト.close()
JDBC  |  Apps Script  |  Google Developers

接続したデータベースにクエリを実行するコード

では、これまでのまとめです。

まとめると以下のコードのようになります。

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オブジェクトについては、次回その中身を解き明かしていきます。

どうぞお楽しみに!

連載目次:GASのJDBCサービスでCloud SQLのDBを操作する

GASのデータベースの多くはスプレッドシートを使用しますが、ちゃんとしたデータベースを使用したい場合があります。そこで、JBDCサービスを使ってCloud SQLを使用する方法をシリーズでお伝えしていきます。
  1. GASのデータベースとして、なぜCloud SQLが有効なのか?その概要とメリット
  2. GASでデータベースとして使用するCloud SQLインスタンスを作成する方法
  3. GCPのCloud Shellを使ってCloud SQLインスタンスに接続する方法
  4. GCPのCloud SQLインスタンスにSQL文でデータベースを作成する方法
  5. GCPのCloud SQLデータベースにSQLでテーブルを作成する方法
  6. GCPのCloud SQLデータベースのテーブルにSQLでレコードを追加する方法
  7. GASのJDBCサービスでCloud SQLデータベースに接続をする方法

Viewing all articles
Browse latest Browse all 2077

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>