
連載:使ってみました! Google Cloud SQL
第1回 駆け足で見るGoogle Cloud SQLでできること
クラスメソッド
中村修太(なかむら しゅうた)
2012/2/22
アプリケーション識別子を設定
次は、Eclipseのウィンドウ左側に注目してください。MyGcsProjectというプロジェクト名を表示しているフォルダのアイコンが見えると思います。これを右クリックして→[Properties]→[Google]と選択し、[App Engine]をクリックしてください。図13のようなダイアログが現れます。ここでは、図10で指定したアプリケーション識別子をApplication ID欄に入力します。
![]() |
図13 GAEのアプリケーション識別子を指定するダイアログ。クリックすると拡大 |
次は、Google Cloud SQLにアプリケーション識別子を設定します。Google APIs Consoleの[Instance settings]ボタンをクリックしてください。図14のようなウィンドウが現れます。「Authorized applications」の欄に、先ほどと同じアプリケーション識別子を入力してから[Save changes]ボタンを押してください。
![]() |
図14 Google Cloud SQLにGAEのアプリケーション識別子を指定するウィンドウ |
いよいよプログラム作成!
これで、あとはプログラムを作るだけです。実際にソースコードを記述していきましょう。作成したMyGcsprojectプロジェクトには、この後修正するweb.xmlとMyGcsProjectServlet.javaがすでに存在しています。これに画面表示用のjspファイル追加してサンプルアプリケーションとします。
まずはMyGcsproject/war/WEB-INFディレクトリにあるweb.xmlを下記のように修正してください。
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>MyGcs</servlet-name>
<servlet-class>jp.classmethod.mygcsproject.MyGcsProjectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyGcs</servlet-name>
<url-pattern>/mygcs</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>mygcs.jsp</welcome-file>
</welcome-file-list>
</web-app>
次は、MyGcsProject/src/jp.classmethod.mygcsprojectディレクトリにあるMyGcsProjectServlet.javaを修正します。Google Cloud SQLで作った、Userテーブルにデータを登録するdoPostメソッドを作ります。最初からMyGcsProjectServletに記述してあるdoGetメソッドを削除し、doPostメソッドを下記のとおりに実装してください。ソースコードの中身は、JDBCを利用したものとほとんど変わりありません。
package jp.classmethod.mygcsproject;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.http.*;
import com.google.appengine.api.rdbms.AppEngineDriver;
@SuppressWarnings("serial")
public class MyGcsProjectServlet extends HttpServlet {
/**
* データを登録する
*/
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Connection c = null;
try {
DriverManager.registerDriver(new AppEngineDriver());
c = DriverManager.getConnection("jdbc:google:rdbms://cloudsqlproject:gcstest/mygcsdb");
String name = req.getParameter("name");
String email = req.getParameter("email");
String statement = "INSERT INTO User (name,email) VALUES(?,?)";
PreparedStatement stmt = c.prepareStatement(statement);
stmt.setString(1, name);
stmt.setString(2, email);
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (c != null)
try {
c.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
resp.setHeader("Refresh", "3; url=/mygcs.jsp");
}
}
最後に、MyGcsProject/warディレクトリにmygcs.jspを追加し、下記の通りに記述します。MyGcsProject/warディレクトリを右クリックして[New]→[Other...]をクリックし、開いたダイアログで[Web]フォルダの中にある[JSP File]を選択して[Next]ボタンを押してください。
ファイル名を指定するダイアログになります。mygcs.jspと入力してFinishボタンをクリックしてください。このjspファイルは、Webブラウザからのアクセスがあった時に、Userテーブルのデータを取得します。
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ page import="java.util.List"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.google.appengine.api.rdbms.AppEngineDriver"%>
<html>
<body>
<%
//Userテーブルのデータを全件取得するSQLを実行
Connection c = null;
c = DriverManager
.getConnection("jdbc:google:rdbms://cloudsqlproject:gcstest/mygcsdb");
ResultSet rs = c.createStatement().executeQuery(
"SELECT id, name,email FROM User");
%>
Userテーブルデータ
<table style="border: 1">
<tr bgcolor="#cccccc">
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
<%
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
%>
<tr>
<td><%=id%></td>
<td><%=name%></td>
<td><%=email%></td>
</tr>
<%
}
c.close();
%>
</table>
<br />
<p>ユーザー登録</p>
<form action="/mygcs" method="post">
<div>
name: <input type="text" name="name"></input>
</div>
<div>
email: <input type="text" name="email"></input>
</div>
<div>
<input type="submit" value="Entry" />
</div>
</form>
</body>
</html>
これでプログラムの準備ができました。
GAEへアプリケーションをアップロード
プログラムができたので、GAEへアプリケーションをアップロードします。メニューバーのGoogleアイコンをクリックし、「Deploy to App Engine...」をクリックするとダイアログが表示されます(図15)。DeployボタンをクリックするとGAE上にアップロードしてくれます。なお、アップロードが成功するとそのままアプリケーションが起動します。コンソールに「Deployment completed successfully」というメッセージが現れたらアップロードと起動は完了です。
![]() |
図15 完成したプログラムをGAEにアップロードするときに現れるダイアログ。クリックすると拡大 |
GAEへアプリケーションのアップロードが完了したら、Webブラウザを開いてアドレスバーに「http://<アプリケーションID>.appspot.com」と入力してアクセスしてみてください。Userテーブルの内容が表示されるはずです(図16)。また、名前とメールアドレスを入力して、データを追加登録することもできます。
![]() |
図16 今回作成したプログラムを実行した結果。Google Cloud SQL上に作った表にアクセスしてデータを取得している。クリックすると拡大 |
今回はGAEとGoogle Cloud SQLのセットアップから始まり、GAEアプリケーションを作ってGoogle Cloud SQLのデータベースにアクセスするところまでを一通りご覧いただきました。かなりの急ぎ足でしたが、Google Cloud SQLをどのように利用すればよいのか、イメージはつかんでいただけたかと思います。次回からはGoogle Cloud SQLの詳細な解説に入ります。使用するときの設定についてより細かく解説し、Google Cloud SQLを利用したアプリケーションを実装する方法の詳細などについてご紹介する予定です。
![]() |
中村修太(なかむら しゅうた) クラスメソッド勤務の新しもの好きプログラマーです。昨年、東京から山口県に引っ越し、現在はノマドワーカーとして働いています。好きなJazzを聴きながらプログラミングするのが大好きです。 |
![]() |
3/3 |
Index | |
連載:使ってみました! Google Cloud SQL 第1回 駆け足で見るGoogle Cloud SQLでできること |
|
Page 1 GoogleがついにRDBMSサービスの提供を開始! GAEでもRDBMSを利用可能に! 開発環境を準備 Google Cloud SQL限定プレビューの参加申し込み |
|
Page 2 Google Cloud SQL初体験! データベースとテーブルの作成と、GAEの準備 Eclipseを起動して、プロジェクト作成 |
|
![]() |
Page 3 アプリケーション識別子を設定 いよいよプログラム作成! GAEへアプリケーションをアップロード |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
![]() |
|
|
|
![]() |