Windows AzureのWebサイトでSQL Serverに接続する簡単なサンプルを所望されたので紹介します。
条件は以下(多分)
・Webサイトを作成する(MVCとか凝ったのじゃなくてシンプルなのがいい!!)
・Azure上の既存のSQLデータベースに接続する
・SQLデータベースへの接続はWebサイトからだけでいい(でも、ローカルからも繋げないと開発大変そうなのでローカルからつなぐ方法も調べてあげようじゃないか)
まずはWebサイトを作成します。
Azureポータルの左ナビからWebサイトを選択して、画面左下の「新規」ボタンをクリック。
DBは既存のSQLデータベースへ接続するので今回は作成しません。
この時点では、SQLデータベースは作成していませんので、既存のSQLデータベースにリンクすることにしましょう。
作成したWebサイトを選択して「リンク済みリソース」をクリックします。
リンク済みのリソースは無いので一覧には何も表示されません。
リンクするために、「リソースをリンクします」をクリックします。
「既存のリソースをリンクスする」をクリックします。
「SQLデータベース」をクリックします。
既存のデータベースを選択してID、パスワードを入力します。
追加が完了すると、下の画像のように一覧に表示されます。
(自動で表示されない場合はリロードすると表示されていることがあります。)
WebサイトとSQLデータベースはリンクされましたが、ローカル環境で開発するためにSQLデータベースへのファイアーウォール設定を行います。
ポータルの左ナビのSQLデータベースを選択して、今回利用するデータベースをクリックします。
「このIPアドレス用にWindows Azureファイアーウォールを設定」をクリック。
画面下部に確認のダイアログが表示されるので「はい」をクリックします。
これで接続許可がされました。
作成されたWebサイトに戻り、画面下部のWebMatrixボタンをクリックします。
(WebMatrixがインストールされていない場合は、インストールが始まりますがここでは、すでにインストール済みとします)
WebMatrixが起動し、どのような形で編集するかを尋ねられます。
「ローカルコピーの編集」をクリックします。
この時点でアプリケーションを作成してしまいます。
「はい、テンプレートギャラリーからインストールします」をクリックします。
「MVCとか使わないでシンプルな構成」というリクエストなので、
空のサイトを選択します。
WebMatrixでは編集せずに速やかにVisual Studioへ移行します。
「Visual Studio」をクリックします。
データベースへの接続を追加します。
もう一度Azureポータルに戻り、
Webサイトを選択。「構成」をクリックして、画面下部の「接続文字列」項目までスクロールします。
「接続文字列の表示」をクリックします。
表示された値をコピーしておきます。
Visual Studioに戻ってWeb.configファイルに以下の接続設定を追加します。
<connectionStrings>
<add
name="ConnectionString"
connectionString="{先ほどコピーした接続文字列}"
providerName="System.Data.SqlClient"
/>
</connectionStrings>
何も編集していないWeb.configに記載した場合以下のようになります。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<connectionStrings>
<add
name="ConnectionString"
connectionString="{接続文字列}"
providerName="System.Data.SqlClient"
/>
</connectionStrings>
</configuration>
この状態でサーバーエクスプローラーを表示すると以下のようにデータ接続が追加されているのが確認できます。
まだ何もテーブルなどが無いDBであればここでテーブルの作成やデータのインサートが行えます。
ここでは、sampledbというテーブルを作成し、そこのnameとdescriptionという2つのカラムをもたせたという想定で進めます。
テーブルには2行のデータが入っていることとします。
この状態でサクッとDBに接続してデータを取り出します。
ダイナミックな変数で受け取っていたり、C#の恩恵があまり感じられないコードですが、そこはサンプルとして簡便さを重視したということで・・・(ちゃんとした書き方も後で紹介します)
Default.cshtmlを以下のように書き換えます。
@{
var db = Database.Open("ConnectionString");
var query = db.Query("SELECT name, description FROM sampledb");
}
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />
<title>マイ サイトのタイトル</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
</head>
<body>
<table>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
@foreach (var row in query)
{
<tr>
<td>@row.name</td>
<td>@row.description</td>
</tr>
}
</table>
</body>
</html>
実行するとDBの結果がデーブルに書きだされます。
もちろん、ブレークポイントも使えます。
Please give us your valuable comment