private void GetData(object satte)
        {
            try
            {
                db.Execute("delete from " + tableName + "");
            }
            catch { }
            string html                 = null;
            string strField             = null;
            List <List <string> > list  = null;
            StringBuilder         sbSql = new StringBuilder();

            for (int page = minPage; page <= maxPage; page++)
            {
                lblTip.Dispatcher.Invoke(new Action <string>(ShowTip), "当前页码:" + (page + (1 - firstPageIndex)) + "/" + (maxPage + (1 - firstPageIndex)));
                html = HtmlHandler.GetHtml(url, get, post, pageParamName, page, pageParamPos == "POST");
                list = HtmlHandler.ParseBody(detailUrl, html, bodyRegEx, appendBodyRegEx, detailUrlIndex);

                //sbSql.Clear();
                foreach (List <string> item in list)
                {
                    strField = "";
                    foreach (string value in item)
                    {
                        strField += "'" + FilterHelper.HtmlFilter(value) + "',";
                    }
                    if (item.Count != lstHeader.Count)
                    {
                        for (var i = item.Count + 1; i <= lstHeader.Count; i++)
                        {
                            strField += "'',";
                        }
                    }
                    //sbSql.Append(string.Format("insert into {0}({1}) values({2});", tableName, strHeader.TrimEnd(','), strField.TrimEnd(',')));
                    if ((int)db.GetScalar(string.Format("select count(1) from {0} where {1}='{2}'", tableName, key, item[keyIndex])) > 0)
                    {
                        continue;
                    }
                    db.Execute(string.Format("insert into {0}({1}) values({2});", tableName, strHeader.TrimEnd(','), strField.TrimEnd(',')));
                }
                //db.Execute(sbSql.ToString());
            }
            lblTip.Dispatcher.Invoke(new Action <string>(ShowTip), "操作完成");
            btnBody.Dispatcher.Invoke(new Action(() => { btnBody.IsEnabled = true; }));
            btnConn.Dispatcher.Invoke(new Action(() => { btnConn.IsEnabled = true; }));
            btnHeader.Dispatcher.Invoke(new Action(() => { btnHeader.IsEnabled = true; }));
        }
        private void btnHeader_Click(object sender, RoutedEventArgs e)
        {
            btnHeader.IsEnabled = false;
            btnConn.IsEnabled   = false;

            url           = txtUrl.Text.Trim();
            detailUrl     = txtDetailUrl.Text.Trim();
            get           = txtGET.Text.Trim();
            post          = txtPOST.Text.Trim();
            pageParamName = txtPageParamName.Text.Trim();
            pageParamPos  = cbbPageParamPos.SelectedItem.ToString();
            if (!int.TryParse(txtFirstPageIndex.Text.Trim(), out firstPageIndex))
            {
                firstPageIndex = 1;
            }
            bodyRegEx       = txtBodyRegEx.Text.Trim();
            headerRegEx     = txtHeaderRegEx.Text.Trim();
            maxPageRegEx    = txtMaxPageRegEx.Text.Trim();
            appendHeader    = txtAppendHeader.Text.Trim();
            appendBodyRegEx = txtAppendBodyRegEx.Text.Trim();
            key             = txtKey.Text.Trim();
            tableName       = txtTableName.Text.Trim();

            string html = HtmlHandler.GetHtml(url, get, post, pageParamName, 1, pageParamPos == "POST");

            lstHeader = HtmlHandler.ParseHeader(html, headerRegEx, maxPageRegEx, out minPage, out maxPage);
            minPage  -= (1 - firstPageIndex);
            maxPage  -= (1 - firstPageIndex);
            if (!string.IsNullOrEmpty(appendHeader))
            {
                int index = appendHeader.IndexOf('-');
                if (index > 0)
                {
                    int.TryParse(appendHeader.Substring(0, index), out detailUrlIndex);
                }
                if (index + 1 < appendHeader.Length)
                {
                    lstHeader.AddRange(appendHeader.Substring(index + 1).Split(','));
                }
            }
            if (lstHeader.Count <= 0)
            {
                lblTip.Content      = "未获取到表头。";
                btnHeader.IsEnabled = true;
                btnConn.IsEnabled   = true;
                return;
            }

            try
            {
                db.Execute("drop table " + tableName + "");
            }
            catch { }
            string dataType = connType == "OleDb" ? "text" : "nvarchar(MAX)";

            strHeader = "";
            StringBuilder sbFields = new StringBuilder();

            keyIndex = 0;
            for (int index = 0; index < lstHeader.Count; index++)
            {
                sbFields.Append(string.Format("{0} {1},", lstHeader[index].Trim(), dataType));
                strHeader += "" + lstHeader[index].Trim() + ",";
                if (lstHeader[index].Trim() == key)
                {
                    keyIndex = index;
                }
            }
            string sql = string.Format(@"create table {0}(
                                            {1}
                                         )", tableName, sbFields.ToString().TrimEnd(','));

            try
            {
                db.Execute(sql);
                lblTip.Content = "表头获取成功,表创建成功,共" + (maxPage + (1 - firstPageIndex)) + "页。";
            }
            catch (Exception ex)
            {
                lblTip.Content = null == ex.InnerException ? ex.Message : ex.InnerException.Message;
            }
            btnBody.IsEnabled   = true;
            btnHeader.IsEnabled = true;
            btnConn.IsEnabled   = true;
        }