I have problem regarding inserting the loop process. So when the connection string determine that the server is down, the inserting process stop looping. My question, is there way to determine whether this connection string is down or not? I have research they answer is to make if condition sqlconn.State == ConnectionState.Open I will show you guys the sample error that I encounter.
        string connetionString = null;
        MySqlConnection cnn;
        connetionString = "server=localhost;database=sample_db_xx;uid=root;pwd=;";
        cnn = new MySqlConnection(connetionString);
        try
        {
            var arpp_pro = new List<string>();
            cnn.Open();
            MySqlCommand command = new MySqlCommand("SELECT store_id,CONCAT(boh,'\\\\sqlexpress') as boh FROM db_cua.stores WHERE " +
                "is_active = 1 AND boh != '' ", cnn);
            using (MySqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine(reader[0].ToString());
                    arpp_pro.Add(reader[1].ToString());
                }
            }
            cnn.Close();
            foreach (var arpp_pro_data in arpp_pro)
            {
                string connetionString_SQL = @"Server=" + arpp_pro_data + " \sqlexpress;Database=Site5;User ID=sa;Password=dospos";
                    //@"Server=" + arpp_pro_data + ";Database=Site5;User ID=sa;Password=dospos";
                var date_minus_one_day = DateTime.Today.AddDays(-1);
                var formatted_date_minus_one_day = date_minus_one_day.ToString("yyyy-MM-dd");
                var year = DateTime.Now.ToString("yyyy");
                var month = DateTime.Now.ToString("MM");
                var date = DateTime.Today.AddDays(-1);
                var date_formatted = date.ToString("dd");
                string get_sos_orders_details = @"SELECT 
                Convert(nvarchar(50),dbo.SOS_ORDERS.OrderId)+ '-'+ Convert(nvarchar(50),dbo.SOS_ORDERS.TransTime) + Convert(nvarchar(50),dbo.Sales.TransactionId)+ Convert(nvarchar(50),dbo.Sales.TotalDeptName) as result,
                dbo.Sales.StoreId,
                Convert(nvarchar(50),dbo.SOS_ORDERS.TransTime) as TransTime,
                dbo.Transactions.OperatorName as Cashier,
                dbo.Sales.TotalDeptName as Transaction_Type,
                dbo.Sales.TransactionId,
                (dbo.SOS_ORDERS.DTOT + dbo.SOS_ORDERS.ASSM) as Cashier_Time,
                (dbo.SOS_ORDERS.KIT) as Preparation_Time,
                (dbo.SOS_ORDERS.KIT + dbo.SOS_ORDERS.DTOT + dbo.SOS_ORDERS.ASSM) as Total_Time
                FROM dbo.SOS_ORDERS INNER JOIN
                dbo.Sales ON dbo.SOS_ORDERS.OrderId = dbo.Sales.StoredOrderIndex INNER JOIN
                dbo.Transactions ON dbo.Sales.Sequence = dbo.Transactions.Sequence
                where dbo.Sales.businessdate= @date_minus_one_day
                OR(DATEPART(yy, dbo.SOS_ORDERS.TransTime) = @year
                AND DATEPART(mm, dbo.SOS_ORDERS.TransTime) = @month
                AND DATEPART(dd, dbo.SOS_ORDERS.TransTime) = @date_today )
                AND(dbo.Sales.TotalDeptName in ('01 SALLE MANGER', '02 EMPORTER')
                or dbo.Sales.TotalDeptName in ('01 DINE IN', '02 TAKE OUT'))
                GROUP BY dbo.SOS_ORDERS.OrderId,  dbo.Sales.StoreId, dbo.SOS_ORDERS.TransTime, dbo.SOS_ORDERS.DTOT, dbo.SOS_ORDERS.LINE, dbo.SOS_ORDERS.WIND, dbo.SOS_ORDERS.SERV, dbo.SOS_ORDERS.HOLD,
                dbo.SOS_ORDERS.TOTL, dbo.SOS_ORDERS.ASSM, dbo.SOS_ORDERS.CASH, dbo.SOS_ORDERS.FTOT, dbo.SOS_ORDERS.PAY, dbo.SOS_ORDERS.KIT, dbo.Sales.TransactionId,
                dbo.Transactions.OperatorName, dbo.Sales.TotalDeptName order by dbo.SOS_ORDERS.TransTime DESC";
                using (SqlConnection sqlconn = new SqlConnection(connetionString_SQL))
                {
                    sqlconn.Open();
                    if (sqlconn.State == ConnectionState.Open)
                    {
                        SqlCommand cmd = new SqlCommand(get_sos_orders_details, sqlconn);
                        cmd.Parameters.AddWithValue("@date_minus_one_day", formatted_date_minus_one_day);
                        cmd.Parameters.AddWithValue("@year", year);
                        cmd.Parameters.AddWithValue("@month", month);
                        cmd.Parameters.AddWithValue("@date_today", date_formatted);
                        SqlDataReader rs = cmd.ExecuteReader();
                        while (rs.Read())
                        {
                            // access your record colums by using reader
                            Console.WriteLine(rs["StoreId"]);
                            cnn.Open();
                            MySqlCommand comm = cnn.CreateCommand();
                            comm.CommandText = @"INSERT INTO master_data.so_v2 (StoreId,TransTime,Cashier,Transaction_Type,TransactionId,Cashier_Time,Preparation_Time)
                            VALUES(@Storeid, @TransTime, @Cashier, @Transaction_Type, @TransactionId, @Cashier_Time, @Preparation_Time)";
                            comm.Parameters.AddWithValue("@Storeid", rs["StoreId"]);
                            comm.Parameters.AddWithValue("@TransTime", rs["TransTime"]);
                            comm.Parameters.AddWithValue("@Cashier", rs["Cashier"]);
                            comm.Parameters.AddWithValue("@Transaction_Type", rs["Transaction_Type"]);
                            comm.Parameters.AddWithValue("@TransactionId", rs["TransactionId"]);
                            comm.Parameters.AddWithValue("@Cashier_Time", rs["Cashier_Time"]);
                            comm.Parameters.AddWithValue("@Preparation_Time", rs["Preparation_Time"]);
                            comm.ExecuteNonQuery();
                            cnn.Close();
                        }
                    }
                    sqlconn.Close();
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
Thank you.

 
    