0

Test と Save_Test という名前の 2 つのテーブルがあります。Test テーブルには 5 つの値を持つ 1 つの列があり、Save_Test テーブルには値のない 1 つの列があります。Test テーブルから値を選択してクリックしたときに保存ボタンを作成する必要があります。保存ボタンをクリックすると、Save_Test テーブルに保存されます。保存ボタンをクリックするたびに、以前に保存された save_Test テーブルの値は、Test テーブルの新しく選択された値に置き換えられる必要があります。ここに私のコードがあります..助けてください..

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" initialize="application1_initializeHandler(event)">
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.collections.ArrayList;
            import mx.events.FlexEvent;
            import mx.events.ValidationResultEvent;
            import mx.rpc.AsyncResponder;
            import mx.rpc.AsyncToken;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.soap.WebService;
            private var web:WebService;
            private var list:ArrayList = new ArrayList();

            protected function application1_initializeHandler(event:FlexEvent):void
            {
                web = new WebService();
                web.wsdl = "https://www.geoviewer8.com/gv8webservices/CSF_NewGVOConfig/GVOConfig.asmx?wsdl";
                web.loadWSDL();
                var s:String = "SELECT * FROM [CSFTestNew].[dbo].[Test]";
                var t:AsyncToken = web.GetRec("[Test]", s, "1", "SQLExpress");
                t.addResponder(new AsyncResponder(onResult, onFault, t));
            }
            protected function onResult(event:ResultEvent, token:Object=null):void
            {
                if(event.result.GetRecResult.Tables != null)
                {
                    for each(var table:Object in event.result.GetRecResult.Tables)
                    {
                        for each(var row:Object in table.Rows)
                        {
                            list.addItem(row);

                        }
                    }
                }

            }

            protected function onFault(event:FaultEvent, token:Object=null):void
            {
                trace(event.fault.toString());
            }

            private function validate(event):void
            {
                var p:String = "INSERT INTO [CSFTestNew].[dbo].[Save_Test]([Areas]) VALUES ('Apple','Banana','Mango','Grapes','StrawBerry')";   
                /* var event:ValidationResultEvent = validate(); */
            } 

            protected function btn_click(event:MouseEvent):void
            {

            } 

        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:ComboBox id="cbareas" x="201" y="241" dataProvider="{list}" labelField="Areas"
                requireSelection="true" />
    <s:Button id="btn" x="417" y="243" label="Save" click="btn_click(event)" />   
</s:Application>

ありがとう

4

1 に答える 1

0

これは少し遅いかもしれませんが、私はあなたの質問を見たばかりです。あなたの挿入ステートメントは5つの値と1つのフィールドのみを示し、あなたの値は「リンゴ、ブドウ、オレンジ...」でなければなりません。

本質的に、あなたがしていることは、5つの異なる列のデータを1つの列に入れようとしていることであり、SQLはそのようには機能しません。

私はSQLストアドプロシージャを使用し、コールドフュージョンを介してそれらを呼び出して、SQLインジェクションの潜在的な問題が発生しないようにします。

パラメータはありません。URLに文字列を使用すると、SQLインジェクション攻撃の可能性が広がります。

お役に立てれば。

ジム

于 2013-01-06T15:33:59.880 に答える