查询的资料上都是用异步页面调用SqlCommand的BeginExecuteReader、BeginExecuteNonQuery方法,Oracle数据库没有办法通过NET异步调用吗?

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e)
            {
                AddOnPreRenderCompleteAsync(
        new BeginEventHandler(BeginAsyncOperation),
        new EndEventHandler(EndAsyncOperation)
    );
            }
    IAsyncResult BeginAsyncOperation(object sender, EventArgs e, AsyncCallback cb, object state)
            {
                string sql = "SELECT TOP 10 * FROM dbo.Card_Ext";
                SqlConnection _conn = new SqlConnection(ConfigurationManager.             AppSettings["DataAccessContionStringRead"].ToString());            _conn.Open();
                SqlCommand cmd = new SqlCommand(sql, _conn);
                IAsyncResult rIsynResult = cmd.BeginExecuteReader(cb, cmd,             CommandBehavior.CloseConnection);            return rIsynResult;
            }
            void EndAsyncOperation(IAsyncResult IResult)
            {
                if (!IResult.IsCompleted)
                {
                    IResult.AsyncWaitHandle.WaitOne();
                }
                else
                {
                    SqlDataReader dr = (IResult.AsyncState as SqlCommand).EndExecuteReader(IResult);
                    if (!dr.IsClosed)
                    {
                        List<string> _list = new List<string>();
                        while (dr.Read())
                        {
                            _list.Add(dr[0].ToString());
                        }
                        this.GridView1.DataSource = _list;
                        this.GridView1.DataBind();
                    }
                    dr.Close();
                }
            }这是代码,但是Oracle里没有 cmd.BeginExecuteReader()这个方法。