2011-01-04 3 views
2

FlashをSQLと併用することはできますか?私はFlashフォームを持っているので、SQLに接続する必要があります。このトピックについてネット上に例がある場合。私はそれを見つけることができません。FlashをSQLと統合できますか?

+2

"SQL"はサーバーではなく、データベースと通信するための言語です。そのことを念頭に置いて、はい、Flashクライアントがデータベースにデータを送信することは非常に可能です(ほとんどの場合、サーバー側のプログラムやスクリプトを通じて可能性があります)。このような実装の具体的な内容は、あなたがやろうとしていることと、データベースに関するプログラミングの背景に依存します。おそらくあなたはユースケースを持っていますか? –

答えて

0

この問題は、SQLサーバーに直接アクセスするFlashファイルを誰かに与えることが非常に安全でないことを意味します。可能であれば、私がSOCKETクラスをMySQLで(たとえそれを使ったことはないが)見てきたとしても、ユーザーがリモートでDBに接続できるようにすることは、ユーザーがログイン情報を盗むことができるため安全ではありません。

私の意見では、これを行う最善の方法は、クライアント/サーバースクリプトを作成することです。 SendAndLoadを使用してPOSTフィールドを介してSQLに渡す必要のあるデータを送信することで、PHPまたはASP.netで簡単に実行できます。次に、PHPで値を返信することができます。

echo 'success ='。+ urlencode(data);

これで、フラッシュは成功フィールドを介してデータにアクセスできます。

私は個人的にフラッシュをコードしていませんが、数十社の商談会社のKIOSKアプリケーションを開発している会社で働いています。私の仕事はデータを保存して戻すことです。これが私たちが使う方法です。 SOAPのような実際のWebサービスを使用することで、よりクリーンなものにすることもできますが、このメソッドを使用するだけでその処理が完了します。

+0

http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary435.html - Flash SendAndLoadメソッドをカバー –

4

SQLデータベースでActionScriptを直接使用することはありません。その代わりに、正しいパラメータを指定して、ActionScriptからサーバーへのHTTP要求を行います。典型的なオープンソースの設定は、MySQL DBと通信するPHPスクリプトですが、OracleにはJava、CouchDBにはRuby、SQLには.NETまたはその他の設定を使用できます。重要な点は、サーバースクリプトを呼び出して変数を渡すことができなければならないということです。通常、Restfulセットアップです。

PHPスクリプトが正しく設定されたら、http POSTまたはhttp GETを使用してActionScriptから値を送信できます。

PHP:

<?php 
    $updateValue = $_POST["updateValue"]; 
    $dbResult = updateDB($updateValue); //This should return the db response 
    echo($dbResult); 
?> 

のActionScriptからこのスクリプトを呼び出すには、変数オブジェクトを作成する必要があります。

var variables:URLVariables = new URLVariables(); 
variables.updateValue = "someResult"; 

変数名.updateValueは、php変数と正確に一致する必要があります。

ここで、スクリプトの場所を指定してURLRequestオブジェクトを作成します。この例では、メソッドをPOSTに設定する必要があります。上記の変数をリクエストのデータセッターに追加します。

var request:URLRequest = new URLRequest("yourScript.php"); 
request.method = URLRequestMethod.POST; 
request.data = variables; 

ここで、URLLoaderを作成し、イベントリスナーを追加します。上で作成したリクエストをコンストラクタに渡すのではなく、loadメソッドに渡してください。

var loader:URLLoader = new URLLoader(); 
loader.addEventListener(Event.COMPLETE, onComplete); 
loader.load(request); 

ハンドラは次のようになります。

private function onComplete(e:Event) : void 
{ 
    trace(URLLoader(e.target).data.toString()); 
} 

この例では、サーバー/ dbコンボから応答を更新して受信する方法を示します。ただし、スクリプトを使用してDBにクエリを実行し、結果を解析することもできます。したがって、上記のPHPの例では、JSON、XML、またはパイプ文字列を出力することができます。これはActionScriptで使用できます。

ActionScriptのe4xサポートはXMLをネイティブオブジェクトのように扱うため、XMLが一般的です。

上記の応答をXML応答のように扱うには、onCompleteハンドラで次のコードを使用します。

private function onComplete(e:Event) : void 
{ 
    var result:XML = XML(URLLoader(e.target).data); 
} 

これはあなたのXMLが不完全に形成されている場合、エラーを投げるので、サーバスクリプトは常にDBエラーがあっても、有効なXMLを出力保証されます。

+0

非常に素晴らしく包括的な答えです。あなたは私の投票を持っています!私は自分の質問に対する答えが詳細であることを願っています。 :-) – Flipster

0

Flashとのサーバー側の通信については、Zend AmfやZend Frameworkを調べる必要があります。私が知る限り、Zend AmfはPHP(つまりあなたのデータベース)と通信する最速の方法であり、&の複雑なオブジェクトをクライアントからサーバーに返すこともできます。逆もまた同様です。

たとえば、これを考慮してください。あなたのデータベースにはたくさんのデータがありますが、ZFで関数を実装しますが、このデータは値オブジェクトのグループとしてフォーマットされ、設定されます。 Flashから、ZFをクエリし、Zfがデータベースをクエリし、&がデータをフォーマットし、値オブジェクトをJSON文字列として返します。 Flashでは、JSON文字列を取得してデコードし、関連するクラスに値オブジェクトを割り当てます。

Zend FrameworkとのFlash通信に関して、多くのチュートリアルがあります。 例:
http://gotoandlearn.com/play.php?id=90

関連する問題