レッスン 8: ブラウズ機能と検索機能の実装では、データを収集する Trip Edit ページを作成しました。今回は、Trip Edit のアクションページを修正して、データをデータベースに挿入します。SQL データベース内にデータを挿入する方法は、次の 2 つです。
cfquery タグを使用して、SQL の INSERT ステートメントを作成および実行します。
cfinsert タグを使用します。この方法を使用すれば、SQL のシンタックスを習得する必要はありません。
この演習では、SQL INSERT ステートメントを使用します。
これまでのレッスンでは、Compass Travel データベースの Trips テーブルから、SQL の SELECT ステートメントでデータを取り出し、DELETE ステートメントでデータを削除していました。SQL を使用してデータベースに旅行を追加するには、SQL の INSERT ステートメントのシンタックスを理解する必要があります。
SQL の INSERT ステートメントにより、リレーショナルテーブルに新しい行が挿入されます。SQL INSERT ステートメントの形式は次のとおりです。
INSERT INTO table_name VALUES (value1, value2,....)
たとえば、Client という名前のデータベーステーブルには、次の行で示した人物に関する情報が含まれています。
| LastName | FirstName | Address | City |
|---|---|---|---|
|
Tom |
Jones |
12 State St |
Boston |
|
Peter |
Green |
1 Broadway |
New York |
テーブルにレコードを追加するには、次のステートメントを使用します。
INSERT INTO Clients
VALUES ('Smith', 'Kaleigh', '14 Greenway', 'Windham')
データベース管理システムによってこのコードが処理されると、テーブルには次の行が含まれます。
| LastName | FirstName | Address | City |
|---|---|---|---|
|
Tom |
Jones |
12 State St |
Boston |
|
Peter |
Green |
1 Broadway |
New York |
|
Smith |
Kaleigh |
14 Greenway |
Windham |
テーブルに挿入される値が、ステートメントにおいて引用符 (') で囲まれている点に注意してください。SQL では、テキストや日付の値はすべて引用符で囲む必要がありますが、数値は例外です。
また、データを挿入する列を指定することもできます。この方法により、特定の列にだけデータを挿入して、その他を省略できます。この方法を実行する場合、次のシンタックスを使用します。
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)
たとえば、住所が不明な Windham の Kaleigh Smith を追加するには、名前の付いた列を使用する方法を用います。
INSERT INTO Clients (LastName, FirstName, City)
VALUES ('Smith', 'Kaleigh', 'Windham')
cfquery タグを使用して、ColdFusion から SQL を実行します。cfquery タグによって、SQL ステートメントがデータソースに渡されます。レッスン 2: 開発環境の設定で説明したとおり、データソースには、指定のデータ供給源 (リレーショナルデータベース管理システムなど) への接続に関する情報が保存されています。レッスン 2 で確立したデータソースには、Compass Travel データベースへのアクセスに関する情報を保管しています。そのデータソース名は "CompassTravel" です。
<cfif isOk EQ "Yes"> というタグを探します。<H1>Trip Added</H1> 行の後に、次の表で示されているコードを追加して、フォーム変数から Trips テーブルにデータを挿入します。
| 対象 | コード |
|---|---|
|
MS Access を使用している Windows ユーザー |
<!--- Compass Travel データベースに新規の旅行レコード
を挿入。 --->
<cfquery name="AddTrip" datasource="compasstravel">
INSERT INTO Trips (tripName, eventType, tripDescription,
tripLocation,departureDate, returnDate, price, tripLeader,
photo, baseCost, numberPeople, depositRequired)
VALUES ( '#Form.tripName#', #Form.eventType#,
'#Form.tripDescription#',
'#Form.tripLocation#','#Form.departureDate#',
'#Form.returnDate#',
#Form.price#,'#Form.tripLeader#', '#Form.photo#',
#Form.baseCost#, #Form.numberPeople#, '#Form.depositRequired#')
</cfquery>
|
|
PointBase を使用している UNIX ユーザー |
<!--- Compass Travel データベースに新規の旅行レコード
を挿入。 --->
<!--- ローカル変数を使用して、日付表示を
入力形式 (mm/dd/yyyy) から JDBC 形式 (yyyy-mm-dd) へ変換。 --->
<cfset JDBCdepartureDate = #Right(Form.departureDate,4)#
& "-" & #Left(Form.departureDate,2)# & "-"
& #Mid(Form.departureDate,4,2)#>
<cfset JDBCreturnDate = #Right(Form.returnDate,4)# & "-"
& #Left(Form.returnDate,2)# & "-"
& #Mid(Form.returnDate,4,2)#>
<cfquery name="AddTrip" datasource="CompassTravel">
INSERT INTO Trips (tripName, eventType,
tripDescription, tripLocation,
departureDate, returnDate, price, tripLeader, photo,
baseCost, numberPeople, depositRequired)
VALUES ( '#Form.tripName#', #Form.eventType#, '#Form.tripDescription#',
'#Form.tripLocation#', Date'#JDBCdepartureDate#',
Date'#JDBCreturnDate#',
#Form.price#,'#Form.tripLeader#', '#Form.photo#',
#Form.baseCost#, #Form.numberPeople#, '#Form.depositRequired#')
</cfquery>
|
| フィールド | 値 |
|---|---|
|
Trip Name |
NH White Mountains |
|
Event Type |
Mountain Climbing |
|
Trip Description |
Climb the 5 highest peaks in the New Hampshire White Mountains. |
|
Trip Location |
Northeastern New Hampshire |
|
Departs |
05/01/2005 |
|
Returns |
05/10/2005 |
|
Number of People |
15 |
|
Price |
1200 |
|
Base Cost |
600 |
|
Deposit Required |
Yes |
|
Trip Leader |
Tom Finn |
|
Photo File Name |
whitemountains.jpg |
新規の旅行がデータベースに保存されると、「You have added NH White Mountains to the trips database.」というメッセージが表示されます。
TripResults ページが表示されます。
次の表で、ColdFusion がデータを追加するために使用する SQL の INSERT ステートメントと cfquery コードを示します。
| コード | 説明 |
|---|---|
<cfquery name="AddTrip" |
|
INSERT INTO Trips (TripName, |
SQL の INSERT ステートメントで、Trips テーブルに挿入するデータを指定します。テーブルの列名は、個々の名前をカンマで区切り、全体を括弧で囲みます
これらの数値は、データ入力フォームからアクションページに渡されるフォーム変数です。変数は、たとえば |
SQL と cfquery タグを使用してデータベースにデータを追加する方法については、『ColdFusion MX 開発ガイド』を参照してください。SQL の詳細については、SQL の手引書を参照してください。
ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX* | ColdFusion 5* | フォーラム* | デベロッパーセンター | サポート情報 | バグ報告
バージョン7
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/coldfusion/7_jp/htmldocs/db_main3.htm