Visual Studio 2008を使って簡単なWebアプリを作ってみる(2)
もう今日から会社は年末年始のお休みに入ったけど、Visual Studio 2008を使って簡単なWebアプリ(掲示板)を作ってみる勉強の続き。前回はデータベースを用意して画面にその内容を表示するところまでをやった。今回は掲示板に投稿できるようにする。
テーブル定義の変更
まず最初に、Bbsのプライマリーキーのid列を自動で採番するようにテーブル定義を直す。いわゆるオートナンバー型にするわけだ。
- データベース エクスプローラのBbsテーブルの上で右クリック
- 「テーブル定義を開く」を選択
- idのところの「IDENTITY の指定」の横の「+」をクリック
- (Is Identity)のところを「いいえ」から「はい」に変更
- Ctrl + Sを押す
これでid列は自動採番されるようになった。alter table文とかは書かなくて良い。
レコードを追加するSQL
Bbsテーブルにレコードを1件追加するメソッドを作る。つまり、Insert文を発行してくれるメソッドをBbsTableAdapterに追加するわけだ。
こうすると「TableAdapter クエリの構成ウィザード」が開く。あとはここにSQL文を入れるだけだ。
これで完成。入力したinsert文は以下のようにした。
insert into Bbs( subject, name, body, timestamp ) values ( @subject, @name, @body, getdate() )
つまり、SQL文を指定するだけで、そのSQLを発行するメソッドを生成してコードから呼び出せるようになる。SQL中の動的な部分は「@」付きの名前にしておく。そのままメソッドの引数となり、SQLに埋め込まれる。SQLインジェクションの心配も無い。idフィールドは自動で採番されるので、渡さなくて良い。timestampフィールドはシステム日付をそのまま入れる。
画面に入力フォームを追加
画面が現段階では表示専用なので、投稿フォームを追加しなきゃいけない。
<form id="RegisterForm" runat="server"> <p> <label for="SubjectText">タイトル</label> <asp:TextBox id="SubjectText" runat="server"></asp:TextBox> </p> <p> <label for="NameText">名前</label> <asp:TextBox id="NameText" runat="server"></asp:TextBox> </p> <p> <label for="BodyText">本文</label> <asp:TextBox id="BodyText" runat="server" columns="50" rows="10" textmode="MultiLine"></asp:TextBox> </p> <p> <asp:Button id="RegisterButton" runat="server" text="登録"></asp:Button> </p> </form>
こんなhtmlを画面(Default.aspx)に追加した。
コードビハインドの作成
画面の裏にコードあり。ってことで、Default.aspx.vbに以下のメソッドを追加。
Protected Sub RegisterButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RegisterButton.Click Dim da As New DataSetTableAdapters.BbsTableAdapter() da.InsertQuery(SubjectText.Text, NameText.Text, BodyText.Text) End Sub
登録ボタンのクリックイベント。BbsTableAdapterをインスタンス化して、たった今作ったInsertQueryメソッドを呼んでるだけ。引数には画面のテキストボックスのTextプロパティを渡すだけ。
とりあえずここまで
表示系と更新系を作ったので、あとはこれを応用すれば大抵のWebアプリは作れると思う。大げさに言ってるわけじゃなく、ホントにそうだと思ってる。
VBのコードは今回2行しか書いてない。前回も4行しか書いてない。従来までは、データベースのデータを画面に表示したり、画面の入力値をデータベースに格納したりする部分は、毎回毎回同じようなコードを書いてきたと思う。Visual Studio 2008では、そういう無駄な作業は自動でやってくれるわけだ。人間にはもっとやらなきゃいけないことがある。UIを洗練させたり、仕様をシンプルにしたり、使う人が少しでも幸せになるために、考えなければいけないことがたくさんある。そういう部分に時間をつぎ込むため、当たり前の作業はツールが自動でやってくれる。
そう考えたとき、まだこの掲示板には足りないところがある。
- 画面がさみしすぎる
- ページング機能が無く、全データが1ページに表示されてしまう
- ソート順が古い順になっている(まあ2chとかはそうだから別にこのままでも良いけど)
- 本文で改行をしても、表示のときに改行されない
- 書き込み1件ずつのパーマリンクが無い
この辺をどうにかしたいと思ったとき、Visual Studio 2008だとどんな方法があるのか。引き続き時間を見つけて勉強していきたい。
2005とほとんど同じ
しかしここまで作ってみてよく考えてみると、ほとんどVisual Studio 2005と同じだ。前に仕事で2005でWebサイト作ったとき、まさにこんな感じだった。そのときDBはOracleだったけど。