public static async void T_InsertAndSelect_TAP()
        {
            System.Diagnostics.Stopwatch stopW = new System.Diagnostics.Stopwatch();
            stopW.Start();
            await Task.Run(async() =>
            {
                var connStr            = GetMySqlConnString();
                var conn               = new MySqlConnection(connStr);
                conn.UseConnectionPool = true;
                await conn.OpenAsync();
                //------------------------------------------
                //drop table if exist
                {
                    string sql = "drop table if exists test001";
                    var cmd    = new MySqlCommand(sql, conn);
                    await cmd.ExecuteNonQueryAsync();
                }
                //------------------------------------------
                {
                    string sql = "create table test001(col_id  int(10) unsigned not null auto_increment, col1 int(10)," +
                                 "col2 char(2),col3 varchar(255),col4 datetime, primary key(col_id) )";
                    var cmd = new MySqlCommand(sql, conn);
                    await cmd.ExecuteNonQueryAsync();
                }
                //---------------------------------------------
                for (int i = 0; i < 100; ++i)
                {
                    string sql = "insert into test001(col1,col2,col3,col4) values(10,'AA','123456789','0001-01-01')";
                    var cmd    = new MySqlCommand(sql, conn);
                    await cmd.ExecuteNonQueryAsync();
                }
                {
                    //test prepared statement
                    string sql = "insert into test001(col1,col2,col3,col4) values(?col1,?col2,?col3,?col4)";
                    var cmd    = new MySqlCommand(sql, conn);
                    await cmd.PrepareAsync(); //prepare
                    CommandParams pars = cmd.Parameters;
                    for (int i = 0; i < 100; ++i)
                    {
                        pars.AddWithValue("?col1", 1000 + i);
                        pars.AddWithValue("?col2", "AA");
                        pars.AddWithValue("?col3", "how are you" + i);
                        pars.AddWithValue("?col4", DateTime.Now);
                        await cmd.ExecuteNonQueryAsync();
                        pars.Clear();
                    }
                    await cmd.ClosePrepareAsync();
                }



                //--------------------------------------------
                //select back
                {
                    string sql = "select * from test001";
                    var cmd    = new MySqlCommand(sql, conn);
#if DEBUG
                    conn.dbugPleaseBreak = true;
#endif

                    int count = 0;
                    await cmd.ExecuteReaderAsync(reader =>
                    {
                        count++;
                        //if (count > 10)
                        //{
                        //    //test stop reader
                        //reader.Stop();
                        //}
                    });
                }
            });

            //--------------------------------------------
            stopW.Stop();
            Report.WriteLine("avg:" + stopW.ElapsedTicks);
        }