SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Webフレームワーク「Alinous-Core」でアプリケーション開発をはじめよう

触って試せるAlinous-Coreの基本スクリプト例12連発

例題からマスターするAlinous-Core


SQLを使う

 次に、SQLを使うサンプルを紹介します。

SELECT文の例

 まずは、SELECT文を実行するSQLを紹介します。

sample05.alns
select * into RECORDINTOAREA from NAMETABLE;
return 0;

 SELECT文ではWHERE句をつけると条件を絞ることができます。 例えば、

select * into RECORDINTOAREA where FAMLYNAME = 'fuse' from NAMETABLE;

 のようにすると、フィールドFAMLYNAMEがfuseのデータだけ読み込みます。 データが少なければ全部を読みこんでもいいのですが、多い場合はパフォーマンスが落ちるため、できるだけ条件を絞るようにしましょう。

 別のテーブルを続けて読むこともできます。また、SQLなので、他のテーブルを結合して読むこともできます。

 この例の前に、変数をHTMLに入力する例を上げましたが、今回の例は、配列の変数をHTMLに書き込んでいます。

sample05.html
<html>
  <head>
    <title>SAMPLE05</title>
  </head/>
  <body>
    すでに登録してあるデータを表示します。<br>
    データベースのテーブル、"NAMETABLE"に格納されている
    内容を表示します。<br>
    sample05.alnsに記述してある"@RECORDINTOAREA"という場所に、
    条件に合う"NAMETABLE"のレコード全てを入力します。<br>
    (今回のSQL文は特に条件をつけていないので、全部のデータ)<br>
    それを1行ずつ表示させるために、
    "DimRecord"という配列を用意して表示させています。
    <br>
    "$DimRecord.FAMLYNAME"のFAMLYNAMEはテーブルの項目名称です。<br>
    テーブルは以下の項目になっています。<br>
    FAMLYNAME、text型<br>
    FIRSTNAME、text型<br>
    <br>
    <table>
      <tr alns:iterate="@RECORDINTOAREA" alns:variable="DimRecord">
        <td>氏: {$DimRecord.FAMLYNAME}</td>
        <td>名: {$DimRecord.FIRSTNAME}</td>
      </tr>
    </table>
  </body>
</html>

INSERT文の例

 次に、INSERT文を使う例を紹介します。この例では、AlinousScript上で変数とSQLを組み合わせて利用しています。

sample06.alns
$FAMLYNAME = "test";
$FIRSTNAME = "stand";

// これは追加のSQL文です
insert into nametable (FAMLYNAME,FIRSTNAME) 
       values ($FAMLYNAME,$FIRSTNAME);

return 0;
sample06.html
<html>
  <head>
    <title>SAMPLE06</title>
  </head>
  <body>
    データベースにデータを追加します。<br>
    FAMLYNAMEに新たにデータを追加しました。<br>
    内容は、<br>
    FAMLYNAMEに"{$FAMLYNAME}"<br>
    FIRSTNAMEに"{$FIRSTNAME}"<br>
    としました。<br>
    <a href="sample05.html">sample05.html</a>を実行し、
    データが追加されることを確認してください。    
  </body>
</html>

 なお、追加したデータは「sample08.html」を実行することで削除できます。

SELECT文とINSERT文の組み合わせの例

 ここで、SELECT文とINSERT文をAlinousScriptで組み合わせた例を紹介します。この例で登場するArray.size()関数は、配列のサイズを取得する関数です。

sample07.alns
$FAMLYNAME = "test";
$FIRSTNAME = "stand";

select * into TEST from NAMETABLE 
        where FAMLYNAME = $FAMLYNAME and FIRSTNAME = $FIRSTNAME; 

$NUM = Array.size(@TEST);

if($NUM == 0) {
    insert into nametable (FAMLYNAME,FIRSTNAME) 
           values ($FAMLYNAME,$FIRSTNAME);
    $msg = "新規データです。";

} else {
    $msg = "すでにデータがありました。";
}

return 0;

 この例では、まず、最初にSELECT文で現在のレコードの状態をチェックし、挿入しようとしているレコードと同じ値がないときのみレコードの挿入を行っています。また、レコードの挿入を行ったかどうかについて、$msg変数を利用してHTMLで表示しています。

 また、このとき、select文を使って取得したデータは、配列変数のTESTに格納されます。$TESTの構造は、TEST.Record.[フィールド名]になります。

sample07.html
<html>
  <head>
    <title>SAMPLE07</title>
  </head>
  <body>
    データベースにデータを追加します。<br>
    すでに同じものが登録されていたら<br>
    登録しないようにしてみました<br>
    {$msg}<br>
    <a href="sample05.html">sample05.html</a>を実行して、
    データが追加されること
   (すでに登録されている場合は、登録されないこと)を確認してください。
  </body>
</html>

 追加したデータは「sample08.html」を実行して削除しておいてください。

DELETE文の例

 DELETE文を削除する例を紹介します。この例では「INSERT文の例」で追加したレコードを削除できます。

sample08.alns
$FAMLYNAME = "test";

delete from nametable where FAMLYNAME = $FAMLYNAME;
return 0;
sample08.html
<html>
  <head>
    <title>SAMPLE08</title>
  </head>
  <body>
    データベースからデータを削除します。<br>
    FAMLYNAMEからデータを削除しました。<br>
    <a href="sample05.html">sample05.html</a>を実行して、
    削除されたことを確認してください。<br>
  </body>
</html>

UPDATE文の例

 UPDATE文でレコードを更新する例を紹介します。

sample09.alns
$FAMLYNAME = "test";
$FIRSTNAME = "stand";
$FIRSTNAMEUPD = "updatedata";

update nametable set FIRSTNAME = $FIRSTNAMEUPD 
       where FAMLYNAME = $FAMLYNAME;
return 0;
sample09.html
<html>
  <head>
    <title>SAMPLE09</title>
  </head>
  <body>
    データベースのデータを更新します。<br>
    内容は、<br>
    FAMLYNAMEに"{$FAMLYNAME}"<br>
    FIRSTNAMEに"{$FIRSTNAME}"<br>
    となっているデータに対して、<br>
    FIRSTNAME行を"{$FIRSTNAMEUPD}"に書き換えました。<br>
    <a href="sample05.html">sample05.html</a>を実行して、
    更新されたことを確認してください。
  </body>
</html>

UPDATE文とSELECT文を組み合わせた例

 この例は、UPDATE文をSELECT文を組み合わせた例で、2つの画面をサポートしています。まず、最初に「http://localhost:8080/sample10.html」にアクセスしてください。すると、次のような画面が表示されます。

初期画面
初期画面

 このフォームの入力の「FAMLYNAME」にtest、「FIRSTNAME」に太郎と入力すると、下の方に表示されている氏のフィールドがtestのレコードの名の値が太郎に変わります。

フォーム投稿後画面
フォーム投稿後画面

 このソースコードは次のようになります。この例で「sample10.alns」は、2通りの動きをします。最初にブラウザから「http://localhost:8080/sample10.alns」にアクセスされたときには、UPDATE処理は行わず送信ボタンを表示します。次に、先ほどのURLにアクセスしてそのページのフォームから投稿されたときにはUPDATE処理を行います。

 このスクリプトでは、Form変数のfamlynameが存在するかどうかで、ブラウザからURLを入力してアクセスされているのか、一度表示したHTMLのページのフォームから投稿されているのかを判断しています。

sample10.alns
if($IN.famlyname == null) {
  // このページが最初に起動されたときに走行するロジックです。
  select * into RECORDINTOAREA from NAMETABLE;

  $inputbutton = '<br><input type="submit" value="送信します"/>';
  $FAMLYNAME = "";
  $FIRSTNAMEUPD = "";
} else {
  $FAMLYNAME = $IN.famlyname;
  $FIRSTNAMEUPD = $IN.firstname;
  
  update nametable set FIRSTNAME
      = $FIRSTNAMEUPD where FAMLYNAME = $FAMLYNAME;

  // 更新後データ表示のために読みます
  select * into RECORDINTOAREA from NAMETABLE;

  $inputbutton = '更新されました。<br>
  念のため<a href="sample05.html">sample05.html</a>を実行して、
  更新されたことを確認してください。<br>';
}

return 0;
sample10.html
<html>
  <head>
    <title>SAMPLE10</title>
  </head>
  <body>
    <form name="testForm" action="sample10.html">
      FAMLYNAME<br>
      <input type="text" name="famlyname" alns:validate="notNull">
      <span alns:msg="famlyname" alns:form="testForm" 
alns:validate="notNull">
<font color="#FF0000">FAMLYNAMEを入力してください。</font> </span><br> この条件に合致するデータについて <br> FIRSTNAME<br> <input type="text" name="firstname" alns:validate="notNull"> <span alns:msg="firstname" alns:form="testForm"
alns:validate="notNull">
<font color="#FF0000">FIRSTNAMEを入力してください。 (表示色等は自在に変えることができます)</font> </span><br> この内容でFIRSTNAME項目を書き換えます。 <br> <br> ※以下はチェックボタンのサンプル表示です。 動作には関係ありません。<br> <input type="checkbox" name="abc[]" value="A">A <input type="checkbox" name="abc[]" value="B">B <input type="checkbox" name="abc[]" value="C">C <br> {$inputbutton} </form> {$FAMLYNAME}<br> {$FIRSTNAMEUPD}<br> NAMETABLEの内容です。参考までに・・・<br> <table border="1"> <tr alns:iterate="@RECORDINTOAREA" alns:variable="Record"> <td> 氏: {$Record.FAMLYNAME} </td> <td> 名: {$Record.FIRSTNAME} </td> </tr> </table> </body> </html>

次のページ
Webの機能に関するサンプル

この記事は参考になりましたか?

Webフレームワーク「Alinous-Core」でアプリケーション開発をはじめよう連載記事一覧

もっと読む

この記事の著者

飯塚 友裕(イイヅカ トモヒロ)

Eclipse関連のソースコード自動生成プロダクトの開発者。ソースコード自動生成エンジンを他社に供給する技術エンジン会社「CROSSFIRE JAPAN, INC.」で、O/RマッピングツールやJavaによるSQLパーサーを開発。現在、NetBeans.org(米国)のパートナー。最近は、Alinous-Coreを利用したパッケージビジネスを行っています。SEO対策対応ECサイト構築パッケージOpen-ECAlinous-Coreのソースコードダウンロードhttp://sourceforge.jp/projects/alinous-core/はてなブログhttp://d.hatena.ne.jp/i-zuka/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1373 2008/09/03 13:57

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー