ASP.NET 徹底活用術(Part2)のホームへ戻る

■データベースの作成と前準備

 

今回は、FAQシステムのデータベースとして便宜上マイクロソフトのAccessを利用します(SQL Serverを利用したいときは、Accessの「アップサイジングウィザード」を利用して移行してください)。FAQシステムで利用するデータベース(faq.mdb)は、図1に示すように4個のテーブルから構成されています。tblFaqsテーブルには、FAQのカテゴリーを格納します。tblPosts/tblThreadsテーブルには、スレッドのヘッダー/明細情報を格納します。tblUsersテーブルには、投稿者のユーザー情報を格納します。

 

ここでは、「Access FAQ」のサイトを作成しますのでtblFaqsテーブルには、図2に示すようなカテゴリーを入力します。

 

1FAQデータベース(faq.mdb)のテーブル関連図

 

 

1tblFaqsテーブルの構成

No

フィールド名

データ型

説明

1

FaqID

オートナンバー型

カテゴリーID(主キー)

2

Name

テキスト(50)

カテゴリー名

3

TotalPosts

長整数型

スレッドヘッダー件数(カテゴリー別)

4

TotalThreads

長整数型

スレッド明細件数(カテゴリー別)

5

LastPostID

長整数型

最終スレッドヘッダーID

6

SortOrder

整数型

並べ替え順

 

 

2tblPostsテーブルの構成

No

フィールド名

データ型

説明

1

PostID

オートナンバー型

スレッドヘッダーID(主キー)

2

FaqID

長整数型

カテゴリーID

3

UserID

長整数型

ユーザーID

4

Subject

テキスト(255)

スレッド件名

5

LastThreadID

長整数型

最終スレッド明細ID

6

TotalViews

長整数型

スレッド閲覧件数

7

TotalReplies

長整数型

スレッド返答件数

8

Approved

Yes/No

スレッド承認フラグ(予備)

9

IsLocked

Yes/No

スレッド固定フラグ(予備)

10

IsPinned

Yes/No

ピン型スレッドフラグ(予備)

11

PostDate

日付/時刻型

スレッドヘッダー作成日

12

ThreadDate

日付/時刻型

スレッド明細作成日

13

PinnedDate

日付/時刻型

ピン型スレッド作成日(予備)

 

 

表3:tblThreadsテーブルの構成

No

フィールド名

データ型

説明

1

PostID

長整数型

スレッドヘッダーID(主キー)

2

ThreadID

オートナンバー型

スレッド明細ID(主キー)

3

UserID

長整数型

ユーザーID

4

Subject

テキスト(255)

スレッド件名

5

Body

メモ型

スレッド本文

6

Approved

Yes/No

スレッド承認フラグ(予備)

7

ThreadDate

日付/時刻型

スレッド作成日

 

 

4tblUsersテーブルの構成

No

フィールド名

データ型

説明

1

UserID

オートナンバー型

ユーザーID(主キー)

2

UserName

テキスト型(50)

ユーザー名

3

ScreenName

テキスト型(50)

ハンドル名

4

Password

テキスト型(50)

パスワード

5

Email

テキスト型(75)

メールアドレス

6

LastLogin

日付/時刻型

最終ログイン日

7

Approved

Yes/No

承認フラグ(メールアドレスが正しいことを確認したときに設定する)

8

TrackYourPosts

Yes/No

返答が入力されたときにスレッドIDをメールにて通知するフラグ(予備)

9

TotalPosts

長整数型

スレッド投稿件数

10

DateCreated

日付/時刻型

ユーザーID作成日

 

2tblFaqsテーブルにAccess FAQのカテゴリーを入力

 

 

FAQデータベースの格納

 

VS.NET 2003を起動して新規プロジェクトを作成したら、ソリューションエクスプローラの右クリックから[追加]-[新しいフォルダ]を選択して、新規フォルダ(webdb)を作成します。WindowsのエクスプローラからFAQデータベース(faq.mdb)をコピーしたら、ソリューションエクスプローラのwebdbフォルダに貼り付けます。ソリューションエクスプローラにfaq.mdbが表示されます(図3)。

 

3:プロジェクトにwebdbフォルダを作成してfaq.mdbを格納

 

 

Web.configファイルの編集

 

VS.NET 2003のソリューションエクスプローラから[Web.config]ファイルをダブルクリックして表示したら、<configuration>…</configuration>の間に、以下の<appSettings>…</appSettings>セクションを追加して、FAQデータベースの接続情報とFAQシステムの環境設定情報を入力します。「FAQ環境設定情報」の「domainName」にはWebサイトのドメン名を指定します。「timeZoneOffset」には、Webサーバーが外国に設置されているとき時間差を指定します。Webサーバーが国内に設置されているときは「0」を指定します。

 

emailServer」、「emailFrom」、「emailTo」には、Webメールを送信するときに必要な「メールサーバー名」、「差出人のメールアドレス」、「システム管理者のメールアドレス」を指定します。ここでは、メールサーバーとしてIISに同梱されているSMTP仮想サーバーを使用します。メールサーバーがインストールされていないときは、「emailServer」に空白「""」を指定します。この場合、FAQシステムからWebメールは送信されません。

 

Webメールを使用するにはSMTP仮想サーバーの設定やcdosys.dllcdoex.dllの登録が必要になります。本稿では誌面の都合上、これらの設定に関する情報は掲載しませんのでインターネットまたは書籍等を参照してください。

 

<appSettings>

  <!-- FAQデータベース接続情報 -->

  <add key="conStringFaq"

    value="PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=C:\wd04\webdb\faq.mdb" />

  <!—FAQシステム環境設定情報 -->

  <add key="domainName" value="http://localhost/wd04/" />

  <add key="timeZoneOffset" value="0"/>

  <add key="emailServer" value="localhost" />  <!-- 空白を指定するとWebメールを無効とする -->

  <add key="emailFrom" value="from@YourDomainName" />

  <add key="emailTo" value="to@YourDomainName" />

</appSettings>

 

さらに、<system.web>…</system.web>セクションにFreeTextBox 3.0を利用するために必要な設定を追加します。

 

<system.web>

  <!-- FreeTextBox 3.0の環境設定情報 -->

  <pages validateRequest="false" />

  <httpHandlers>

   <add verb="GET" path="FtbWebResource.axd"

     type="FreeTextBoxControls.AssemblyResourceHandler, FreeTextBox" />

  </httpHandlers>

</system.web>

 

 

●書き込み権限の設定

 

ASP.NETAccessのデータベースを使用する場合、ASP.NETのワーカープロセスのメモリ空間でデータベースが処理されます。IIS 5.0/5.1のワーカープロセスの実行ユーザーは、「マシン名\ASPNET」ですから、このユーザーに対してAccessのデータベースの書き込み権限を与える必要があります(IIS 6.0の実行ユーザーは「NT AUTHORITY\NETWORK SERVICE」です)。Accessは内部的に一時的なファイルを作成しますので、mdbの代わりにmdbが格納されているフォルダに書き込み権限を付与します。

 

Windowsのエクスプローラを起動したら、「C:\wd04\webdb」の右クリックから[プロパティ]を選択します。「webdbのプロパティ」が表示されたら、[セキュリティ]タブから[追加]ボタンをクリックします。

 

図4:webdbフォルダのプロパティを表示したら[追加]ボタンをクリック

 

 

「ユーザーまたはグループの選択」が表示されたら、「選択するオブジェクト名を入力してください」に「ASPNET」を入力して[OK]をクリックします。

 

5:選択するオブジェクト名に「ASPNET」を入力したら[OK]をクリック

 

 

webdbのプロパティ」に戻ったら、「セキュリティ」タブから[ASP.NETコンピュータアカウント・・・]を選択して、「ASP.NETコンピュータアカウントのアクセス許可」から「書き込み」をチェックします。最後に、[OK]をクリックしてプロパティウィンドウを閉じます。これでwebdbフォルダに書き込み権限が設定されましたのでレコードの追加、更新、削除が可能になります。

 

図6:ASPNETアカウントに「書き込み」権限を許可する

 

ASP.NET 徹底活用術(Part2)のホームへ戻る