AS2: загрузите переменные класса sendandload

Подключение к Oracle ужасно. Вот немного более чистого кода с оператором using. Многие другие примеры не вызывают методы IDisposable для создаваемых ими объектов.

using (OracleConnection connection = new OracleConnection("ConnectionString"))
    using (OracleCommand command = new OracleCommand("ProcName", connection))             
    {
          command.CommandType = CommandType.StoredProcedure;
          command.Parameters.Add("ParameterName", OracleDbType.Varchar2).Value = "Your Data Here";
          command.Parameters.Add("SomeOutVar", OracleDbType.Varchar2, 120);
          command.Parameters["return_out"].Direction = ParameterDirection.Output;
          command.Parameters.Add("SomeOutVar1", OracleDbType.Varchar2, 120);
          command.Parameters["return_out2"].Direction = ParameterDirection.Output;
          connection.Open();
          command.ExecuteNonQuery();
          string SomeOutVar = command.Parameters["SomeOutVar"].Value.ToString();
          string SomeOutVar1 = command.Parameters["SomeOutVar1"].Value.ToString();
    }
1
задан Pmarcoen 15 June 2009 в 08:49
поделиться

1 ответ

Когда вызывается ваш обработчик onLoad, он вызывается так, как если бы он был функцией-членом экземпляра LoadVars, а не вашего пользовательского экземпляра.

Есть несколько способов обойти это, один заключается в использовании Delegate.create () для создания функции, которая будет работать по назначению, например:

import mx.utils.Delegate;

class user {

    var lastname:String;
    var ontvang:LoadVars;

    function user(in_ID:Number){
                ontvang = new LoadVars();
                var zend:LoadVars = new LoadVars();
                zend.ID = in_ID;
                ontvang.onLoad = Delegate.create(this, onLoad);                
                zend.sendAndLoad("http://localhost/Services/getUser.php", ontvang, "POST");

                };
    }

    function onLoad(success:Boolean) : Void
    {
       if (success) {
          lastname = ontvang.lastname;
       } else {
          lastname = 'error';
       }
    }
}

Не забывайте, что загрузка является асинхронной - когда вы создаете один из своих пользовательских объектов, переменные-члены не будут доступны сразу. Что вам может понадобиться, так это позволить вашему пользовательскому объекту сигнализировать о своей готовности так же, как это делает LoadVars (например, с помощью функции обратного вызова, предоставляемой вызывающей стороной), чтобы ваше приложение управлялось этими асинхронными событиями.

2
ответ дан 3 September 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: