/// <summary>
        /// Extract all stock objects
        /// </summary>
        /// <param name="sourceContent"></param>
        /// <returns></returns>
        public static List<StockObject> ProcessStockObjectList(string sourceContent)
        {
            List<StockObject> listStockObjects = new List<StockObject>();

            string[] parts = sourceContent.Split(new string[] { "/tr>" }, StringSplitOptions.RemoveEmptyEntries);
            //Console.WriteLine("parts.Length = {0}", parts.Length);
            for (int i = 0; i < parts.Length; i++)
            {
                try
                {
                    int length = 0;
                    string content = parts[i];
                    int trStart = content.IndexOf("<tr>");
                    int trEnd = content.IndexOf("</tr>");
                    if (trStart < 0 && trEnd < 0)
                    {
                        continue;
                    }
                    if (trEnd < 0)
                    {
                        trEnd = content.Length - 1;
                        length = trEnd - trStart;
                    }
                    else
                    {
                        length = trEnd + "</tr>".Length - trStart;
                    }
                    string trContent = content.Substring(trStart, length);

                    StockObject so = new StockObject();
                    if (so.Parse(trContent))
                        listStockObjects.Add(so);
                    //Console.WriteLine("[{0}]:{1},{2},{3},{4},{5},{6},{7}", i, so.symbol, so.name, so.lastTrade, so.lastTreadTime, so.change, so.changePercent, so.volume);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("index={0},{1}", i, ex.Message);
                    //throw ex;
                }
            }

            return listStockObjects;
        }
 public static string InsertStockObject(Stock stock, StockObject so)
 {
     string queryTemp = "INSERT INTO {0} (smarket,stype,symbol,name,last_trade,last_trade_time,change,change_percent,volume) VALUES('{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')";
     return string.Format(queryTemp, stock.table, stock.market, stock.type, so.symbol, so.name, so.lastTrade, so.lastTreadTime, so.change, so.changePercent, so.volume);
 }