Пример #1
0
        private void btnUpdateDisk_Click(object sender, EventArgs e)
        {
            if (this.dataGridView.SelectedRows.Count != 1)
            {
                MessageBox.Show("请选中一行!", "提示", MessageBoxButtons.OK);
                return;
            }

            String diskDescribe = this.dataGridView.SelectedRows[0].Cells[1].Value.ToString();

            FolderBrowserDialog dlg = new FolderBrowserDialog();

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                if (!dlg.SelectedPath.EndsWith(":\\"))
                {
                    MessageBox.Show("请选择磁盘根目录!", "提示", MessageBoxButtons.OK);
                    return;
                }

                if (MessageBox.Show(
                        string.Format("确定要更新磁盘 \'{0}\' 通过实际磁盘 \'{1}\' 吗?",
                                      diskDescribe, dlg.SelectedPath), "提示",
                        MessageBoxButtons.OKCancel,
                        MessageBoxIcon.Question) ==
                    DialogResult.Cancel)
                {
                    return;
                }

                int deleteFilmNumber = sqlData.DeleteByDiskDescribeFromFilmInfo(diskDescribe);
                int deleteDiskNumber = sqlData.DeleteByDiskDescribeFromDiskInfo(diskDescribe);

                bool bBriefScan = this.checkBoxBriefScan.Checked;
                int  setLayer   = Convert.ToInt32(this.tbeLayer.Text);

                ProgressForm progressForm = new ProgressForm(new ThreadScanDisk(
                                                                 dlg.SelectedPath, diskDescribe, this.cbScanMedia.Checked,
                                                                 bBriefScan ? setLayer : Int32.MaxValue,
                                                                 new ThreadScanDisk.ThreadSacnDiskCallback(ThreaScanDiskResult),
                                                                 sqlData));
                progressForm.ShowDialog();

                this.needReFillRamData = true;

                gridViewData = ConvertDiskInfoToGrid(sqlData.GetAllDataFromDiskInfo());
                this.dataGridView.DataSource = gridViewData;

                string extraMsg = string.Empty;
                if (bBriefScan && bCompleteScan)
                {
                    extraMsg = string.Format("\n设定扫描层数 {0} 足以进行完全扫描!", setLayer);
                }
                MessageBox.Show(String.Format("更新磁盘 \'{0}\' 完成!{1}", diskDescribe, extraMsg),
                                "提示", MessageBoxButtons.OK);
            }
        }
Пример #2
0
        /// <summary>
        /// -1 从网页抓取数据失败,0 从网页抓取数据条数和数据库相同只更新时间
        /// 返回抓取数据条数
        /// </summary>
        /// <param name="strMsg">输出信息,用于显示</param>
        /// <param name="crawlTime">抓取时间</param>
        /// <returns></returns>
        public void Update4KInfo()
        {
            RealOrFake4KWebDataCaptureResult rst = new RealOrFake4KWebDataCaptureResult();

            rst.crawlTime = DateTime.Now;

            string    errMsg  = "";
            DataTable crawlDt = CrawlData(ref errMsg, this.crawlURL);

            if (crawlDt == null || crawlDt.Rows.Count == 0)
            {
                rst.strMsg = string.Format("从网页\n{0}\n抓取数据失败\n{1}",
                                           this.crawlURL, errMsg);
                rst.code = -1;
                this.threadWebDataCaptureCallback?.Invoke(rst);
                this.threadWebDataCaptureFinish?.Invoke();
                return;
            }

            int diskCount = sqlData.CountRowsOfDiskFromFilmInfo(
                CommonString.RealOrFake4KDiskName);

            if ((diskCount - 1) >= crawlDt.Rows.Count)
            {
                // 更新时间
                int affectedCount =
                    sqlData.UpdateDiskRealOrFake4KInModifyTimeFromDiskInfo(
                        rst.crawlTime);
                Debug.Assert(diskCount == affectedCount);

                rst.strMsg = string.Format(
                    "从网页\n{0}\n抓取数据条数 {1} 小于或等于数据库已存在条数 {2}\n不更新数据库信息",
                    this.crawlURL, crawlDt.Rows.Count, diskCount - 1);
                rst.code = 0;
                this.threadWebDataCaptureCallback?.Invoke(rst);
                this.threadWebDataCaptureFinish?.Invoke();
                return;
            }

            sqlData.DeleteByDiskDescribeFromFilmInfo(CommonString.RealOrFake4KDiskName);

            int maxId   = sqlData.GetMaxIdOfFilmInfo();
            int startId = maxId + 1;
            int diskId  = startId;

            DataTable dt = CommonDataTable.GetFilmInfoDataTable();

            DataRow drDisk = dt.NewRow();

            drDisk["id"]           = startId++;
            drDisk["name"]         = CommonString.RealOrFake4KDiskName;
            drDisk["path"]         = "------";
            drDisk["size"]         = -1;
            drDisk["create_t"]     = rst.crawlTime;
            drDisk["modify_t"]     = rst.crawlTime;
            drDisk["is_folder"]    = true;
            drDisk["to_watch"]     = false;
            drDisk["to_watch_ex"]  = false;
            drDisk["s_w_t"]        = System.Data.SqlTypes.SqlDateTime.MinValue.Value;
            drDisk["to_delete"]    = false;
            drDisk["to_delete_ex"] = false;
            drDisk["s_d_t"]        = System.Data.SqlTypes.SqlDateTime.MinValue.Value;
            drDisk["content"]      = String.Empty;
            drDisk["pid"]          = -1;
            drDisk["max_cid"]      = startId - 1 + crawlDt.Rows.Count;
            drDisk["disk_desc"]    = CommonString.RealOrFake4KDiskName;
            dt.Rows.Add(drDisk);

            foreach (DataRow crawlDr in crawlDt.Rows)
            {
                DataRow dr = dt.NewRow();
                dr["id"]   = startId++;
                dr["name"] = string.Join(" | ", crawlDr.ItemArray.Cast <string>().
                                         Where(x => !string.IsNullOrWhiteSpace(x)));
                dr["path"]         = "------";
                dr["size"]         = -1;
                dr["create_t"]     = rst.crawlTime;
                dr["modify_t"]     = rst.crawlTime;
                dr["is_folder"]    = false;
                dr["to_watch"]     = false;
                dr["to_watch_ex"]  = false;
                dr["s_w_t"]        = System.Data.SqlTypes.SqlDateTime.MinValue.Value;
                dr["to_delete"]    = false;
                dr["to_delete_ex"] = false;
                dr["s_d_t"]        = System.Data.SqlTypes.SqlDateTime.MinValue.Value;
                dr["content"]      = String.Empty;
                dr["pid"]          = diskId;
                dr["max_cid"]      = startId - 1;
                dr["disk_desc"]    = CommonString.RealOrFake4KDiskName;
                dt.Rows.Add(dr);
            }

            sqlData.InsertDataToFilmInfo(dt);

            rst.strMsg = string.Format("从网页\n{0}\n抓取数据 {1} 条,已写入数据库",
                                       this.crawlURL, crawlDt.Rows.Count);
            rst.code = crawlDt.Rows.Count;
            this.threadWebDataCaptureCallback?.Invoke(rst);
            this.threadWebDataCaptureFinish?.Invoke();
        }